jeden Konstruktor durch eine passende Funktion ersetzen.
data N = Z | S N fold ( z :: b ) ( s :: b -> b ) :: N -> b data List a = Cons a (List a) | Nil fold ( cons :: a -> b -> b ) ( nil :: b ) :: List a -> bRekursionsmuster instantiieren = (Konstruktor-)Symbole interpretieren (durch Funktionen) = eine Algebra angeben.
length = fold ( \ _ l -> l + 1 ) 0 reverse = fold ( \ x ys -> ) []