X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=week1.mdwn;h=c13fa7ca8787de96d87d81694544064fa1654522;hp=9ee159a95ced6d4acad7b17ed871c813b9e2cf7c;hb=93600ef645fa8bbb304288ea2161ec06b017762e;hpb=063871356a65122f09deed0fc6f72df7d8412a61
diff --git a/week1.mdwn b/week1.mdwn
index 9ee159a9..c13fa7ca 100644
--- a/week1.mdwn
+++ b/week1.mdwn
@@ -57,26 +57,24 @@ We'll tend to write (λa M)
as just `(\a M)`, so we don't hav
Application: (M N)
-Some authors reserve the term "term" for just variables and abstracts. We won't participate in that convention; we'll probably just say "term" and "expression" indiscriminately for expressions of any of these three forms.
+Some authors reserve the term "term" for just variables and abstracts. We'll probably just say "term" and "expression" indiscriminately for expressions of any of these three forms.
Examples of expressions:
-
-x
-(y x)
-(x x)
-(\x y)
-(\x x)
-(\x (\y x))
-(x (\x x))
-((\x (x x)) (\x (x x)))
-
+ x
+ (y x)
+ (x x)
+ (\x y)
+ (\x x)
+ (\x (\y x))
+ (x (\x x))
+ ((\x (x x)) (\x (x x)))
The lambda calculus has an associated proof theory. For now, we can regard the
proof theory as having just one rule, called the rule of **beta-reduction** or
"beta-contraction". Suppose you have some expression of the form:
- ((\a M) N)
+ ((\ a M) N)
that is, an application of an abstract to some other expression. This compound form is called a **redex**, meaning it's a "beta-reducible expression." `(\a M)` is called the **head** of the redex; `N` is called the **argument**, and `M` is called the **body**.
@@ -605,7 +603,6 @@ Here's how it looks to say the same thing in various of these languages.
It's easy to be lulled into thinking this is a kind of imperative construction. *But it's not!* It's really just a shorthand for the compound "let"-expressions we've already been looking at, taking the maximum syntactically permissible scope. (Compare the "dot" convention in the lambda calculus, discussed above.)
-
9. Some shorthand
OCaml permits you to abbreviate:
@@ -654,6 +651,8 @@ Here's how it looks to say the same thing in various of these languages.
or in other words, interpret the rest of the file or interactive session with `bar` assigned the function `(lambda (x) B)`.
+
Some more comparisons between Scheme and OCaml
----------------------------------------------