\begin{slide}{Funktionen als Daten}

ein Datum (Objekt) kann man
\begin{itemize}
\item speichern (in Variable, in Struktur)
\item übergeben (an und von Unterprogramm)
\end{itemize}

eine Funktion, deren erstes Argument eine Funktion ist:
\begin{verbatim}
map ( \ x -> x * x ) [ 1,2,3 ] 

map f xs = 
    if null xs then []
    else f (head xs) : map f (tail xs)
\end{verbatim}

zweites Argument: Liste von Funktionen
\begin{verbatim}
map ( \ f -> f 3 ) [ sin, cos, log ]
\end{verbatim}


\end{slide}

\begin{slide}{Funktionen als Daten (II)}

in anderen Sprachen verfügbar:
\begin{itemize}
\item C\#: delegates
\item C\# 3: anonyme Funktionen (Lambda-Ausdrücke)
\end{itemize}

oder simuliert (Java): Beispiel Strategie-Muster:

ein Objekt, das das gewünschte Unterprogramm
als (einzige) Methode hat, 

vgl. interface ActionListener

\end{slide}



%%% Local Variables: 
%%% mode: latex
%%% TeX-master: t
%%% End: 
