X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=week1.mdwn;h=b4d584d4f7db1676ab42891b9e32f3d5980599f6;hp=b5a67fa367f2e663ee5e36502a52c700b14e18d6;hb=1a4c40836dc37109b086d47ee9fb27c2f9726e6b;hpb=edfcc704a4036cae0f2fd6399b99beb29c493cca diff --git a/week1.mdwn b/week1.mdwn index b5a67fa3..b4d584d4 100644 --- a/week1.mdwn +++ b/week1.mdwn @@ -59,9 +59,16 @@ We'll tend to write (λa M) as just `(\a M)`, so we don't hav 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: +Examples of expressions: 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 @@ -596,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: @@ -667,9 +673,11 @@ Here's how it looks to say the same thing in various of these languages. and there's no more mutation going on there than there is in: + When a previously-bound variable is rebound in the way we see here, that's called **shadowing**: the outer binding is shadowed during the scope of the inner binding.