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ámolni

Instrukció: lista első x eleme

take 10 [1..]