\begin{slide}{Monaden zur Programmstrukturierung}

\begin{verbatim}
class Monad m where { return :: a -> m a ;
    (>>=)  :: m a -> (a -> m b) -> m b }
\end{verbatim}

Anwendungen:
\begin{itemize} \itemsep 0pt
\item semantische Bereiche f. Interpreter, 
\item Parser, 
\item Unifikation
\end{itemize}

Testfragen (für jede Monad-Instanz):
\begin{itemize}
\item Typ (z. B. Action)
\item anwendungsspezifische Elemente (z. B. new, put)
\item Implementierung der Schnittstelle (return, bind)
\end{itemize}

\end{slide}
