19 lines
669 B
TeX
19 lines
669 B
TeX
So in mathematical terms you can say:\\
|
|
$f : A_1 \times ... \times A_n \mapsto B$
|
|
\vspace{\baselineskip}
|
|
\\
|
|
gets modified into:\\
|
|
\pause
|
|
$f' : A_1 \mapsto (A_2 \mapsto (\ ...\ (A_n \mapsto B)))$
|
|
\vspace{\baselineskip}
|
|
\\
|
|
\pause
|
|
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}
|
|
On the other hand function application is \emph{left}-associative, so \hinline{f 3 2} is just a shorthand of \hinline{(f 3) 2}. Makes sense? |