Browse Source

Improve and restructure currying slides

Julian Ospald 4 years ago
parent
commit
ca934d2391
No account linked to committer's email address

+ 1
- 0
VL2/VL2_document_structure.tex View File

@@ -57,6 +57,7 @@
57 57
 
58 58
 \subsection{Partial application}
59 59
 \slide{./content/VL2_currying6.tex}
60
+\slide{./content/VL2_currying6.2.tex}
60 61
 
61 62
 \subsection{Curry \ifger{und}{and} Uncurry}
62 63
 \slide{./content/VL2_currying7.tex}

+ 1
- 1
VL2/content/VL2_currying1.tex View File

@@ -10,4 +10,4 @@ addInt x y = x + y
10 10
 addInt :: (Int, Int) -> Int
11 11
 addInt (x, y) = x + y
12 12
 \end{haskellcode}
13
-\ifger{was im Grunde der Sache sogar recht nahe kommt.}{which is actually pretty close.}
13
+\ifger{was im Grunde der Sache sogar recht nahe kommt. Denn die Beziehung beider Schreibweisen ist eigentlich schon \textbf{Currying}.}{which is actually pretty close. Because the connection between both syntax is exactly that: \textbf{currying}.}

+ 1
- 1
VL2/content/VL2_currying3.tex View File

@@ -4,7 +4,7 @@ $f(x, y) = y / x$
4 4
 \\
5 5
 \pause
6 6
 \ifger{Um diese Funktion für $x = 2$ und $y = 3$ zu berechnen würden wir einfach einsetzen:}{In order to evaluate the function for $x = 2$ and $y = 3$ we would do:}\\
7
-$f(2, 3) = 2 / 3$\\
7
+$f(2, 3) = 3 / 2$\\
8 8
 \ifger{und fertig sein.}{and be done.}
9 9
 \vspace{\baselineskip}
10 10
 \\

+ 15
- 0
VL2/content/VL2_currying6.2.tex View File

@@ -0,0 +1,15 @@
1
+\ifger{Wer es unbedingt wissen will, der Grund warum wir \hinline{x} auslassen können ist, dass}{The reason we can omit the \hinline{x} here is that}
2
+\begin{haskellcode}
3
+f x y z = ...
4
+\end{haskellcode}
5
+\ifger{mehr oder weniger nur syntax sugar ist für}{is more or less just syntax sugar for}
6
+\begin{haskellcode}
7
+f = \x -> (\y -> (\z -> ... )) -- right-associative, ofc
8
+\end{haskellcode}
9
+\ifger{D.h. wir hätten auch folgendes schreiben können:}{That means we could have said:}
10
+\begin{haskellcode}
11
+addTwo :: Int -> Int
12
+addTwo = \x -> (addInt 2) x
13
+-- instead of
14
+addTwo x = (addInt 2) x
15
+\end{haskellcode}

+ 5
- 10
VL2/content/VL2_currying6.tex View File

@@ -7,13 +7,8 @@ addInt x y = x + y
7 7
 addTwo :: Int -> Int
8 8
 addTwo = addInt 2
9 9
 \end{haskellcode}
10
-\ifger{Warum haben wir nicht \hinline{addTwo x = ...} geschrieben? Wieso sollten wir? Wir haben \hinline{addInt} ein Argument übergeben, also ist die Arität (im Beispiel vorher Dimension) einer weniger und damit ist noch ein Argument notwendig um den endgültigen Wert zu bekommen.}{You probably noticed that we did not write \hinline{addTwo x = ...}, but why would we? We gave \hinline{addInt} one argument, so the arity (we called it dimension in the gemoetrical example) is one less, but there is still one parameter left we can pass in.}
11
-\pause
12
-\ifger{Der Grund warum wir \hinline{x} auslassen können ist, dass}{The reason we can omit the \hinline{x} here is that}
13
-\begin{haskellcode}
14
-f x y z = ...
15
-\end{haskellcode}
16
-\ifger{nur syntax sugar ist für}{is just syntax sugar for}
17
-\begin{haskellcode}
18
-f = \x -> (\y -> (\z -> ... )) -- right-associative, ofc
19
-\end{haskellcode}
10
+\ifger{Warum haben wir nicht \hinline{addTwo x = ...} geschrieben? Wieso sollten wir? Wir haben \hinline{addInt} ein Argument übergeben, also ist die Arität (im Beispiel vorher Dimension) einer weniger und damit ist noch ein Argument notwendig um den endgültigen Wert zu bekommen.
11
+\vspace{\baselineskip}\\
12
+Oder in anderen Worten: wir haben der Zwischenfunktion, die Currying für uns erstellt hat, lediglich den Namen \hinline{addTwo} gegeben.}{You probably noticed that we did not write \hinline{addTwo x = ...}, but why would we? We gave \hinline{addInt} one argument, so the arity (we called it dimension in the gemoetrical example) is one less, but there is still one parameter left we can pass in.
13
+\vspace{\baselineskip}\\
14
+Or in other words: we just gave the intermediate function that currying created for us the name \hinline{addTwo}. That's it.}\vspace{\baselineskip}\\