author Jim Mon, 2 Feb 2015 23:06:58 +0000 (18:06 -0500) committer Jim Mon, 2 Feb 2015 23:06:58 +0000 (18:06 -0500)

index 613cd45..560a1c4 100644 (file)
@@ -190,9 +190,9 @@ or like this:

lambda (x, y). x + y

lambda (x, y). x + y

-They permit you to appreviate the first &lambda;-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 &lambda;`x. 10 - x`.Similarly, `( & ys)` expresses a function that takes an argument `x` and evaluates to `x & ys`.
+They permit you to appreviate the first &lambda;-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 &lambda;`x. 10 - x`. Similarly, `( & ys)` expresses a function that takes an argument `x` and evaluates to `x & ys`.

-All of this only works with infix operators like `-`, `&` and `+`. You can't write `1 swap` or `swap 1` to mean &lambda;`x. (1, x)`.
+All of this only works with infix operators like `-`, `&` and `+`. You can't write `(1 swap)` or `(swap 1)` to mean &lambda;`x. swap (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`.

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`.
@@ -201,10 +201,12 @@ Wait a second, you say. Isn't that just what `+` does *already*? Why am I making

x + y

x + y

-if we want to instead use `( + )`, we have to instead write:
+if we want to use `( + )`, we have to instead write:

(+) (x, y)

(+) (x, y)

+It may not be obvious now why this would ever be useful, but sometimes it will be.
+
Confession: actually, what I described here diverges a *tiny* bit from what OCaml and Haskell do. They wouldn't really write `(+) (x, y)` like I just did. Instead they'd write `(+) x y`. We will look at the difference between these next week.

Confession: actually, what I described here diverges a *tiny* bit from what OCaml and Haskell do. They wouldn't really write `(+) (x, y)` like I just did. Instead they'd write `(+) x y`. We will look at the difference between these next week.