Haskell

De la Wikipedia, enciclopedia liberă
Salt la: Navigare, căutare

Haskell este un limbaj de programare funcțională. Poartă numele lui Curry Haskell.

Caracteristici ale limbajului funcțional Haskell[modificare | modificare sursă]

Spre deosebire de limbajele imperative care manipuleaza practic date sub forma de numere întregi sau valori codate prin numere întregi (caractere, stringuri, pointeri), limbajele funcționale manipulează funcții codate prin "expresii lambda". Dacă limbajul funcțional e compilat sunt codate prin combinatori. Cum mulțimea functiilor este mai bogată decat cea a numerelor întregi (are un cardinal mai mare), asemenea limbaje sunt mult mai expresive.

La nivel pragmatic, orice limbaj functional poate fi văzut ca un manipulator de algoritmi, exprimați cel mai adesea ca la orele de matematică elementară.

Teoria matematică a calculului lambda se studiază în cadrul cursului de Programare funcțională.

Alte informații despre limbajul Haskell[modificare | modificare sursă]

- in Haskell puteti scrie programe sigure, functiile din limbajul functional nefiind afectate de efecte externe, cum ar fi schimbari de variabile globale.

- in Haskell puteti manipula algoritmi sub forma de functii. Se deschide astfel usa catre o serie de domenii incluzand printre ele "Algoritmii genetici" unele optimizari, "Sabloane de programare", "Inteligenta artificiala", "Sisteme adaptive" si alte domenii

- putem modela procese, care se combina intre ele, deoarece avem la dispozitie compunerea de functii.

- putem face verificari ale datelor folosind parsere modulare ale caror efecte / verificari asupra intrarilor se compun

- putem scrie algoritmi generici uramand ca functia/prelucrarea care lipseste sa fie furnizata ca parametru ulterior

- putem demonstra matematic corectitudinea functiilor scrise, daca se cere asa ceva

- avem la dispozitie functii anonime, functii de unica intrebuintare.

- deoarece aplicarea functiilor asociaza la dreapta iar in cursul calculelor regulile de reducere se pot aplica in mai multe locuri din formula, evaluarea unei formule se poate face pe mai multe procesoare conlucrand ! Acest lucru califica limbajele functionale (bazate pe combinatori si/sau lambda calcul) printre limbajele din deceniul procesarii dual-core si/sau quad-core.

- in Haskell, limbaj functional pur, fara efecte laterale, functiile dau intotdeauna acelasi rezultat (da, chiar si functiile pentru I/O - vedeti monada de I/O) ceea ce permite garantarea calitatii software-ului. Permite de asemenea si demonstrarea calitatii lui. (Aici ar fi de adaugat referinte la carti...)

- puteti incapsula sabloane de programare in functii de ordin superior

- puteti lucra in stiluri cum sunt generic programming si monadic programming (cel putin in Haskell si ceva mai greu in alte limbaje functionale cum sunt LISP si Scheme)

- daca limbajul admite clase (Haskell admite, iar Lisp-ul nu) puteți defini clase in care datele manipulate sunt de fapt functii.

- in Haskell, limbaj funcțional pur, 'actiunile de I/O' se pot folosi și ca instrucțiuni, și ca date. Pot fi plasate pe liste, pe arbori sau pe alte structuri, puteti parcurge cum doriti lista sau arborele si construi dinamic, din mers, o actiune de I/O compusa. Această acțiune numită main este executată când rulați programul.

Vezi și[modificare | modificare sursă]

Legături externe[modificare | modificare sursă]