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 manipulează practic date sub formă 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ă decât 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ă]

- în Haskell puteți scrie programe sigure, funcțiile din limbajul funcțional nefiind afectate de efecte externe, cum ar fi schimbări de variabile globale.

- în Haskell puteți manipula algoritmi sub formă de funcții. Se deschide astfel ușa către o serie de domenii incluzând printre ele "Algoritmii genetici" unele optimizari, "Șabloane de programare", "Inteligența artificială", "Sisteme adaptive" și alte domenii

- putem modela procese, care se combină între ele, deoarece avem la dispoziție compunerea de funcții.

- putem face verificări ale datelor folosind parsere modulare ale căror efecte / verificări asupra intrărilor se compun

- putem scrie algoritmi generici urmând ca funcția/prelucrarea care lipsește să fie furnizată ca parametru ulterior

- putem demonstra matematic corectitudinea funcțiilor scrise, dacă se cere așa ceva

- avem la dispoziție funcții anonime, funcții de unică întrebuințare.

- deoarece aplicarea funcțiilor asociază la dreapta iar în cursul calculelor regulile de reducere se pot aplica în mai multe locuri din formulă, evaluarea unei formule se poate face pe mai multe procesoare conlucrand ! Acest lucru califica limbajele funcționale (bazate pe combinatori și/sau lambda calcul) printre limbajele din deceniul procesării dual-core și/sau quad-core.

- în Haskell, limbaj funcțional pur, fără efecte laterale, funcțiile dau întotdeauna același rezultat (da, chiar și funcțiile pentru I/O - vedeți monada de I/O) ceea ce permite garantarea calității software-ului. Permite de asemenea și demonstrarea calității lui. (Aici ar fi de adăugat referințe la cărți...)

- puteți încapsula șabloane de programare în funcții de ordin superior

- puteți lucra în stiluri cum sunt generic programming și monadic programming (cel puțin în Haskell și ceva mai greu în alte limbaje funcționale cum sunt LISP și Scheme)

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

- în Haskell, limbaj funcțional pur, 'acțiunile 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 doriți lista sau arborele și construi dinamic, din mers, o acțiune de I/O compusă. Această acțiune numită main este executată când rulați programul.

Vezi și[modificare | modificare sursă]

Legături externe[modificare | modificare sursă]