haskell-lectures/VL2/content/VL2_currying5.tex

19 lines
1.0 KiB
TeX

\ifger{D.h. mathematisch gesehen können wir schreiben:}{So in mathematical terms you can say:}\\
$f : A_1 \times ... \times A_n \mapsto B$
\vspace{\baselineskip}
\\
\ifger{wird zu}{gets modified into:}\\
\pause
$f' : A_1 \mapsto (A_2 \mapsto (\ ...\ (A_n \mapsto B)))$
\vspace{\baselineskip}
\\
\pause
\ifger{Die Klammern hier sind äußerst wichtig! Currying ist \emph{rechts}-assoziativ, d.h. die folgenden 2 Typsignaturen in Haskell sind äquivalent:}{Did you just notice the braces? They are \textbf{very} important! So, currying is \emph{right}-associative which means that these two signatures are equivalent:}
\begin{haskellcode}
f :: Int -> Int -> Int
f :: Int -> (Int -> Int)
-- but this is NOT the same
f :: (Int -> Int) -> Int
\end{haskellcode}
\ifger{Auf der anderen Seite ist Funktionsanwendung \emph{links}-assoziativ, d.h.}{On the other hand function application is \emph{left}-associative, so} \hinline{f 3 2} \ifger{ist nur die Kurzform für}{is just a shorthand of} \hinline{(f 3) 2}. \ifger{Macht Sinn?}{Makes sense?}