Rekursionsmuster (Prinzip)

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 -> b
Rekursionsmuster instantiieren = (Konstruktor-)Symbole interpretieren (durch Funktionen) = eine Algebra angeben.
length  = fold ( \ _ l -> l + 1 ) 0
reverse = fold ( \ x ys ->      ) []



Johannes Waldmann 2010-01-25