\begin{slide}{Anonyme Funktionen}

  \begin{itemize} \itemsep 0pt\parskip 2pt
  \item 
Syntax: 

$v_1,\ldots, v_n$ sind formale Parameter,
$B$ ein Ausdruck
\begin{itemize} \itemsep 0pt\parskip 2pt
\item Mathematik: $\lambda v_1 \ldots v_n . B$
\item Haskell: \verb|\ v1 .. vn -> B|
\item C\#: \verb|(v1, .., vn) => B|
\end{itemize}


\item Semantik: \quad Funktion auf Argumente anwenden:
x
$(\lambda v_1 \ldots v_n.B)A_1 \ldots A_n$

in $B$ wird jedes $v_i$ durch (Wert von) $A_i$
ersetzt. \\ 
(Genaueres dazu später im Compilerbau.)

\item Beispiele:
  \begin{itemize} \itemsep 0pt\parskip 2pt
  \item 
$(\lambda f x y . f y x)~
 (\lambda a b . a - b)~ 1~ 2$
\item
  $(\lambda f x .f (f x)) ~(\lambda a.a+1)~ 0$
  \end{itemize}

  \end{itemize}


\end{slide}
