X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=week1.mdwn;h=6773a7714f358bdbc6da564719b018a5000ee271;hb=e47611204f506bac2a53a81dd9a0e6e85600575e;hp=2c686583929b8e65d537b04ada523f7909c45813;hpb=74149f64a2c684075745513abc97730f034a65d4;p=lambda.git diff --git a/week1.mdwn b/week1.mdwn index 2c686583..6773a771 100644 --- a/week1.mdwn +++ b/week1.mdwn @@ -57,7 +57,7 @@ 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: @@ -74,7 +74,7 @@ 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**. @@ -603,6 +603,7 @@ 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.) + Some more comparisons between Scheme and OCaml ----------------------------------------------