Tipuri Valoare :: Context => tip Avem variabile de tip !! numele de variabile trebuie să înceapă cu literă mică !! senisbil la indentare Tipuri de bază - numeric / întreg / francțional - boolean - caracter - pereche (x, y) fst, snd - listă [a,b,c] -- !! Toate elementele listei au același tip -- !! Listele nu sunt implementate ca perechi [a..b] [e1,e2..en] e : listă [] head, tail ++ !! if valoare then valoare else valoare case valoare of valoare -> expresie valoare -> expresie otherwise -> expresie (sau _ în loc de otherwise) f pars | condiție = valoare întoarsă de f | condiție = valoare întoarsă de f | otherwise = valoare întoarsă de f (se evaluează ca ifelse -> prima condiție îndeplinită) nume = valoare ~ define let nume=expr in expr let {nume=val; nume=val} in expr nume = valoare where nume2 = val nume3 = val funcție anonimă: \pars -> valoare Toate funcțiile sunt curry (op) --> operator folosit ca funcție (prefixat) Expresiile (de date) sunt asociative stânga Expresiile de tip sunt asociative dreapta expr (ceva (altceva parametru)) ~ expr $ ceva $ altceva parametru List comprehensions [ forma elementului | var <- domeniu, cond, var <- domeniu, cond ]