Haskell – Pure Functional Programming
Haskell ist eine rein funktionale, statisch typisierte Programmiersprache mit Lazy Evaluation. Das bedeutet: Funktionen haben keine Seiteneffekte, Variablen sind unveränderlich, und Ausdrücke werden erst ausgewertet, wenn ihr Wert wirklich gebraucht wird. Haskell eignet sich hervorragend, um komplexe Algorithmen kompakt und nachweisbar korrekt zu formulieren.
GHC & GHCi – Compiler und REPL
ghc --version– Compiler-Version prüfenghc Datei.hs– kompiliert zu einer ausführbaren Dateighc -O2 Datei.hs– mit Optimierung kompilierenghci– interaktive REPL (Read-Eval-Print-Loop) starten:load Datei.hsbzw.:l– Modul in GHCi laden:t ausdruck– Typ eines Ausdrucks anzeigen:info name– Informationen zu einer Funktion:quitbzw.:q– GHCi beenden
Basissyntax
-- Kommentar
fac :: Integer -> Integer -- Typ-Signatur
fac 0 = 1 -- Basisfall
fac n = n * fac (n - 1) -- Rekursion
main :: IO ()
main = print (fac 20)
Wichtige Konzepte
- Pure Functions: gleiche Eingabe, gleiche Ausgabe, keine Seiteneffekte
- Immutable Data: Werte sind unveränderlich; „Ändern“ erzeugt neue Werte
- Lazy Evaluation: Ausdrücke werden nur bei Bedarf ausgewertet – erlaubt unendliche Listen wie
take 5 [1..] - Higher-Order Functions:
map,filter,foldr/foldl - Typklassen:
Num,Eq,Ord,Show– generische Funktionen - Monaden: kapseln Seiteneffekte (IO), Fehler (Maybe/Either) und Zustand – z. B.
do-Notation
Nützliche Funktionen
map (*2) [1,2,3] -- [2,4,6]
filter even [1..10] -- [2,4,6,8,10]
foldr (+) 0 [1..100] -- 5050
take 5 (repeat 7) -- [7,7,7,7,7]
Pakete: Cabal und Stack
cabal update– Paketindex aktualisierencabal install <paket>– Paket installierenstack build– Projekt bauenstack ghci– REPL im Projektkontext
Weitere Sprachen im Glossar: Scala, Elixir & Erlang und Julia. Grundlagen funktionaler Konzepte: Algorithmus und Compiler.