Der Standard-Compiler ist GHC, die interaktive Umgebung GHCi (:t ausdruck zeigt den Typ, :l datei lädt Code). Projekte verwaltest du mit Cabal oder Stack; Pakete findest du auf Hackage. Tests schreibst du etwa mit QuickCheck: Es erzeugt zufällige Eingaben und prüft Eigenschaften deiner Funktionen.
Das Typsystem, Reinheit und Eigenschaftstests machen Haskell-Code oft erstaunlich zuverlässig.
-- In GHCi:
-- :t map => map :: (a -> b) -> [a] -> [b]
-- :l Hallo.hs
import Test.QuickCheck
umkehren :: [Int] -> [Int]
umkehren = reverse
-- Eigenschaft: zweimal umkehren ergibt die Ausgangsliste
prop_zweimal :: [Int] -> Bool
prop_zweimal xs = umkehren (umkehren xs) == xs
main :: IO ()
main = quickCheck prop_zweimalMerke
- GHC übersetzt, GHCi probiert interaktiv
- Cabal und Stack verwalten Projekte, Hackage hält Pakete
- QuickCheck prüft Eigenschaften mit Zufallsdaten
Aufgabe
Prüfe mit QuickCheck, dass `sort` die Länge einer Liste nicht verändert.