\begin{slide}{Rekursionsmuster (Prinzip)}

jeden Konstruktor durch eine passende Funktion ersetzen.

\begin{verbatim}
data List a = Nil | Cons a (List a) 
fold ( nil :: b ) ( cons :: a -> b -> b ) 
   :: List a -> b
\end{verbatim}
Rekursionsmuster instantiieren $=$
(Konstruktor-)Symbole interpretieren (durch Funktionen) $=$
eine Algebra angeben.
\begin{verbatim}
length  = fold 0   ( \ _ l -> l + 1 ) 
reverse = fold Nil ( \ x ys ->      ) 
\end{verbatim}


\end{slide}
