Browse Source

Improve currying slide

Julian Ospald 4 years ago
parent
commit
2627252b15
No account linked to committer's email address
1 changed files with 5 additions and 3 deletions
  1. 5
    3
      VL2/content/VL2_currying5.tex

+ 5
- 3
VL2/content/VL2_currying5.tex View File

@@ -1,6 +1,5 @@
1 1
 \ifger{D.h. mathematisch gesehen können wir schreiben:}{So in mathematical terms you can say:}\\
2 2
 $f : A_1 \times ... \times A_n \mapsto B$
3
-\vspace{\baselineskip}
4 3
 \\
5 4
 \ifger{wird zu}{gets modified into:}\\
6 5
 \pause
@@ -8,7 +7,7 @@ $f' : A_1 \mapsto (A_2 \mapsto (\ ...\ (A_n \mapsto B)))$
8 7
 \vspace{\baselineskip}
9 8
 \\
10 9
 \pause
11
-\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:}
10
+\ifger{Die Klammern hier sind äußerst wichtig! Currying ist \emph{rechts}-assoziativ, d.h. die folgenden 2 Typsignaturen sind äquivalent:}{The braces are \textbf{very} important! It means currying is \emph{right}-associative and these these two signatures are equivalent:}
12 11
 \begin{haskellcode}
13 12
 f :: Int -> Int -> Int
14 13
 f :: Int -> (Int -> Int)
@@ -16,4 +15,7 @@ f :: Int -> (Int -> Int)
16 15
 -- but this is NOT the same
17 16
 f :: (Int -> Int) -> Int
18 17
 \end{haskellcode}
19
-\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?}
18
+\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}.
19
+\vspace{\baselineskip}
20
+\\
21
+\ifger{Also, wenn wir in Haskell scheinbar mehrere Argumente einer Funktion übergeben, steckt immer Currying dahinter. Es erzeugt eine Reihe von (Zwischen-)Funktionen mit jeweils einem Argument und evaluiert diese dann schrittweise.}{So, if we seemingly pass multiple arguments into a function, then that's always currying in disguise. It create those (intermediate) functions, all with one argument only, and then evaluates them stepwise.}