X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=topics%2Fweek1_advanced_notes.mdwn;h=613cd451e961a3456c223295361cf538e570f92d;hp=8f0fb85114b40b94cb3987aec0a4ae153eb67574;hb=1c0cc2347294f30ca830e4a3eb7597c70f52b669;hpb=ade558370a8eae453217df959d56f56de5df5c30
diff --git a/topics/week1_advanced_notes.mdwn b/topics/week1_advanced_notes.mdwn
index 8f0fb851..613cd451 100644
--- a/topics/week1_advanced_notes.mdwn
+++ b/topics/week1_advanced_notes.mdwn
@@ -190,9 +190,14 @@ or like this:
lambda (x, y). x + y
-They permit you to appreviate the first λ-expression as simply `(10 - )`. We know there's an argument missing, because the infix operator `-` demands two arguments, but we've only supplied one. So `(10 - )` expresses a function that takes an argument `x` and evaluates to `10 - x`. In other words, it expresses λ`x. 10 - x`.Similarly, `( & ys)` expresses a function that takes an argument `x` and evaluates to `x & ys`. And --- can you guess what the last one will be? --- `( + )` expresses a function that takes two arguments `(x, y)` and evaluates to `x + y`.
+They permit you to appreviate the first λ-expression as simply `(10 - )`. We know there's an argument missing, because the infix operator `-` demands two arguments, but we've only supplied one. So `(10 - )` expresses a function that takes an argument `x` and evaluates to `10 - x`. In other words, it expresses λ`x. 10 - x`.Similarly, `( & ys)` expresses a function that takes an argument `x` and evaluates to `x & ys`.
-Wait a second, you might say. Isn't that last operation exactly what `+` does *already*? Why am I making a distinction between `+` and `(+)`? The difference is that bare `+` without any parentheses is an *infix* operator that comes between its arguments. Whereas when we wrap it with parentheses, it loses its special infix syntax and then just behaves like a plain variable denoting a function, like `swap`. Thus whereas we write:
+All of this only works with infix operators like `-`, `&` and `+`. You can't write `1 swap` or `swap 1` to mean λ`x. (1, x)`.
+
+Can you guess what our shortcut for the last function will be? It's `( + )`. That
+expresses a function that takes two arguments `(x, y)` and evaluates to `x + y`.
+
+Wait a second, you say. Isn't that just what `+` does *already*? Why am I making a distinction between `+` and `(+)`? The difference is that bare `+` without any parentheses is an *infix* operator that comes between its arguments. Whereas when we wrap it with parentheses, it loses its special infix syntax and then just behaves like a plain variable denoting a function, like `swap`. Thus whereas we write:
x + y