This shows you the differences between two versions of the page.
pp:24:laboratoare:haskell:intro [2024/03/31 16:51] florin.mihalache created |
pp:24:laboratoare:haskell:intro [2024/04/09 02:17] (current) alexandru.bala |
||
---|---|---|---|
Line 22: | Line 22: | ||
În jurul anilor 1990 un comitet de cercetători în limbaje de programare (Simon Marlow, Simon Peyton Jones, Philip Wadler etc) a creat un limbaj nou care a ajuns să fie standardul de-facto în cercetarea din domeniul programării funcționale. Inspirat dintr-o varietate de limbaje -- Miranda, ML, Scheme, APL, FP -- limbajul a influențat la rândul lui majoritatea limbajelor de programare cunoscute. | În jurul anilor 1990 un comitet de cercetători în limbaje de programare (Simon Marlow, Simon Peyton Jones, Philip Wadler etc) a creat un limbaj nou care a ajuns să fie standardul de-facto în cercetarea din domeniul programării funcționale. Inspirat dintr-o varietate de limbaje -- Miranda, ML, Scheme, APL, FP -- limbajul a influențat la rândul lui majoritatea limbajelor de programare cunoscute. | ||
- | **Haskell** este un limbaj funcțional **pur**. Spre deosebire de limbajele imperative (sau Racket unde există //set!//), în Haskell aproape toate funcțiile sunt pure. Funcțiile impure sunt marcate diferit prin intermediul sistemului de tipuri. | + | **Haskell** este un limbaj funcțional **pur**. Spre deosebire de limbajele imperative (sau Racket unde există //[[https://docs.racket-lang.org/reference/set_.html|set!]]//), în Haskell aproape toate funcțiile sunt pure. Funcțiile impure sunt marcate diferit prin intermediul sistemului de tipuri. |
În plus față de Racket, Haskell are **tipare statică** (și tipuri **polimorfice**). Fiecare expresie are un tip și este sarcina programatorului să efectueze conversiile necesare între tipuri dacă este necesar. De cele mai multe ori, informația despre ce face o funcție se găsește integral în tipul acesteia și numele ei. Astfel, se pune accentul pe //ce// face funcția, nu //cum// efectuează ea operațiile cerute. | În plus față de Racket, Haskell are **tipare statică** (și tipuri **polimorfice**). Fiecare expresie are un tip și este sarcina programatorului să efectueze conversiile necesare între tipuri dacă este necesar. De cele mai multe ori, informația despre ce face o funcție se găsește integral în tipul acesteia și numele ei. Astfel, se pune accentul pe //ce// face funcția, nu //cum// efectuează ea operațiile cerute. |