Haskell
- Nyelv mögötti modell: lambakalkulusz
- Más gondolkodásmódot feltételez az imperatív / oop nyelvekhez képest
- Magas szintű nyelv
- Static typing, type safety
- Lusta kiértékelés: egy adott kifejezést addig nem értékelünk ki, amíg feltétlenül nem szükséges
A nyelv főbb előnyei
- Magas absztrakció szint
- Függvények is paraméterek!
- Tiszta nyelv - nincsenek mellékhatások, vagy nagyon jól el vannak különítv
- Interpretált és fordított futtatás is támogatott
Bevezetés a Haskell programokba
Null függvény
-- ez egy függvény definíció!
isEmpty [] = True -- Üres input esetén működik, minden más esetben Exception
-- runtime:
isEmpty [] -- ez működik!
isEmpty [1, 2, 3] -- ez exception -> ez a logikai ág nincs megadva!-- ez a függvény definíció
-- polimorf függvény: több alakkal képes működni (számok listája, betűk listája, stb)
isEmpty [] = True
isEmpty _ = False
-- runtime:
isEmpty [] -- returns True
isEmpty [1, 2, 3, 4] -- returns False
-- Végtelen lista:
isEmpty [1..] -- returns False
-- (length [1..]) -- ez nem működik -> nem lehet végtelen lista elemeit megszámolniInstrukció: lista első x eleme
take 10 [1..]