eigentlich:
data List a = Nil {}
| Cons { head :: a, tail :: List a }
wegen früher häufiger Benutztung verkürzte Schreibweise:
List a = [a], Nil = [], Cons = (:)
data [a] = []
| (:) { head :: a, tail :: [a] }
Pattern matching für Listen:
append :: [a] -> [a] -> [a]
append a b = case a of
[] -> b
x : xs -> ...