+ ( + ) 2 3
+
+ I'll mostly do this, for uniformity with Scheme and the lambda calculus.
+
+ In OCaml and the lambda calculus, this:
+
+ foo 2 3
+
+ means the same as:
+
+ ((foo 2) 3)
+
+ These functions are "curried". MORE
+ `foo 2` returns a `2`-fooer, which waits for an argument like `3` and then foos `2` to it. `( + ) 2` returns a `2`-adder, which waits for an argument like `3` and then adds `2` to it.
+
+ In Scheme, on the other hand, there's a difference between `((foo 2) 3)` and `(foo 2 3)`. Scheme distinguishes between unary functions that return unary functions and binary functions. For our seminar purposes, it will be easiest if you confine yourself to unary functions in Scheme as much as possible.
+
+ Scheme is very sensitive to parentheses and whenever you want a function applied to any number of arguments, you need to wrap the function and its arguments in a parentheses. So you have to write `(foo 2)`; if you only say `foo 2`, Scheme won't understand you.
+
+ Scheme uses a lot of parentheses, and they are always significant, never optional. Often the parentheses mean "apply this function to these arguments," as just described. But in a moment we'll see other constructions in Scheme where the parentheses have different roles. They do lots of different work in Scheme.
+
+
+2. Binding suitable values to the variables `three` and `two`, and adding them.