DOC PREVIEW
Columbia COMS W4115 - The Lambda Calculus

This preview shows page 1-2-21-22 out of 22 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 22 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 22 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 22 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 22 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 22 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

The Lambda CalculusStephen A. EdwardsColumbia UniversityFall 2010Lambda ExpressionsFunction application written in prefix form. “Add four and five” is(+ 4 5)Evaluation: select a redex and evaluate it:(+ (∗ 5 6) (∗ 8 3)) → (+ 30 (∗ 8 3))→ (+ 30 24)→ 54Often more than one way to proceed:(+ (∗ 5 6) (∗ 8 3)) → (+ (∗ 5 6) 24)→ (+ 30 24)→ 54Simon Peyton Jones, The Implementation of Functional Programming Languages,Prentice-Hall, 1987.Function Application and CurryingFunction application is written as juxtaposition:f xEvery function has exactly one argument. Multiple-argumentfunctions, e.g., +, are represented by currying, named after HaskellBrooks Curry (1900–1982). So,(+ x)is the function that adds x to its argument.Function application associates left-to-right:(+ 3 4) = ((+ 3) 4)→ 7Lambda AbstractionThe only other thing in the lambda calculus is lambda abstraction:a notation for defining unnamed functions.(λx . + x 1)( λ x . + x 1 )↑ ↑ ↑ ↑ ↑ ↑That function of x that adds x to 1The Syntax of the Lambda Calculusexpr ::= expr expr| λ variable . expr| constant| variable| (expr)Constants are numbers and built-in functions;variables are identifiers.Beta-ReductionEvaluation of a lambda abstraction—beta-reduction—is justsubstitution:(λx . + x 1) 4 → (+ 4 1)→ 5The argument may appear more than once(λx . + x x) 4 → (+ 4 4)→ 8or not at all(λx . 3) 5 → 3Beta-ReductionFussy, but mechanical. Extra parentheses may help.(λx . λy . + x y) 3 4 =µ³λx .³λy .¡(+ x) y¢´´3¶4→µλy .¡(+ 3) y¢¶4→¡(+ 3) 4¢→ 7Functions may be arguments(λf . f 3) (λx . + x 1) → (λx . + x 1) 3→ (+ 3 1)→ 4Free and Bound Variables(λx . + x y) 4Here, x is like a function argument but y is like a global variable.Technically, x occurs bound and y occurs free in(λx . + x y)However, both x and y occur free in(+ x y)Beta-Reduction More Formally(λx . E) F →βE0where E0is obtained from E by replacing every instance of x thatappears free in E with F.The definition of free and bound mean variables have scopes. Onlythe rightmost x appears free in(λx . + (− x 1)) x 3so(λx . (λx . + (− x 1)) x 3) 9 → (λ x . + (− x 1)) 9 3→ + (− 9 1) 3→ + 8 3→ 11Another Example³λx . λy . + x¡(λx . − x 3) y¢´5 6 →³λy . + 5¡(λx . − x 3) y¢´6→ + 5¡(λx . − x 3) 6¢→ + 5 (− 6 3)→ + 5 3→ 8Alpha-ConversionOne way to confuse yourself less is to do α-conversion: renaming aλ argument and its bound variables.Formal parameters are only names: they are correct if they areconsistent.(λx . (λx . + (− x 1)) x 3) 9 ↔ (λx . (λy . + (− y 1)) x 3) 9→ ((λy . + (− y 1)) 9 3)→ (+ (− 9 1) 3)→ (+ 8 3)→ 11Beta-Abstraction and Eta-ConversionRunning β-reduction in reverse, leaving the “meaning” of a lambdaexpression unchanged, is called beta abstraction:+ 4 1 ← (λx . + x 1) 4Eta-conversion is another type of conversion that leaves “meaning”unchanged:(λx . + 1 x) ↔η(+ 1)Formally, if F is a function in which x does not occur free,(λx . F x) ↔ηFReduction OrderThe order in which you reduce things can matter.(λx . λy . y)¡(λz . z z) (λz . z z)¢Two things can be reduced:(λz . z z) (λz . z z)(λx . λy . y) ( ·· · )However,(λz . z z) (λz . z z) → (λz . z z) (λz . z z)(λx . λy . y) ( ·· · ) → (λy . y)Normal FormA lambda expression that cannot be β-reduced is in normal form.Thus,λy . yis the normal form of(λx . λy . y)¡(λz . z z) (λz . z z)¢Not everything has a normal form. E.g.,(λz . z z) (λz . z z)can only be reduced to itself, so it never produces an non-reducibleexpression.Normal FormCan a lambda expression have more than one normal form?Church-Rosser Theorem I: If E1↔ E2, then there existsan expression E such that E1→ E and E2→ E.Corollary. No expression may have two distinct normal forms.Proof. Assume E1and E2are distinct normal forms for E: E ↔ E1and E ↔ E2. So E1↔ E2and by the Church-Rosser Theorem I, theremust exist an F such that E1→ F and E2→ F. However, since E1andE2are in normal form, E1= F = E2, a contradiction.Normal-Order ReductionNot all expressions have normal forms, but is there a reliable way tofind the normal form if it exists?Church-Rosser Theorem II: If E1→ E2and E2is in normal form,then there exists a normal order reduction sequence from E1to E2.Normal order reduction: reduce the leftmost outermost redex.Normal-Order Reductionµ³λx .¡(λw . λz . + w z) 1¢´¡(λx . x x) (λx . x x)¢¶¡(λy . + y 1) (+ 2 3)¢leftmost outermostleftmost innermostλxλwλz+wz1λxx xλxx xλy+y1+23RecursionWhere is recursion in the lambda calculus?FAC =µλn . IF (= n 0) 1³∗ n¡FAC (− n 1)¢´¶This does not work: functions are unnamed in the lambda calculus.But it is possible to express recursion as a function.FAC = (λn . ... FAC ...)←β(λf . (λn . ... f . ..)) FAC= H FACThat is, the factorial function, FAC, is a fixed point of the(non-recursive) function H:H = λf . λn . IF (= n 0) 1 (∗ n (f (− n 1)))RecursionLet’s invent a function Y that computes FAC from H, i.e., FAC = Y H:FAC = H FACY H = H (Y H)FAC 1 = Y H 1= H (Y H) 1= (λf . λn . IF (= n 0) 1 (∗ n (f (− n 1)))) (Y H) 1→ (λn . IF (= n 0) 1 (∗ n ((Y H) (− n 1)))) 1→ IF (= 1 0) 1 (∗ 1 ((Y H) (− 1 1)))→ ∗ 1 (Y H 0)= ∗ 1 (H (Y H) 0)= ∗ 1 ((λf . λn . IF (= n 0) 1 (∗ n (f (− n 1)))) (Y H) 0)→ ∗ 1 ((λn . IF (= n 0) 1 (∗ n (Y H (− n 1)))) 0)→ ∗ 1 (IF (= 0 0) 1 (∗ 0 (Y H (− 0 1))))→ ∗ 1 1→ 1The Y CombinatorHere’s the eye-popping part: Y can be a simple lambda expression.Y == λf .¡λx . f (x x)¢¡λx . f (x x)¢Y H =³λf .¡λx . f (x x)¢¡λx . f (x x)¢´H→¡λx . H (x x)¢¡λx . H (x x)¢→ H³¡λx . H (x x)¢¡λx . H (x x)¢´↔ H³³λf .¡λx . f (x x)¢¡λx . f (x x)¢´H´= H (Y H)“Y: The function that takes a function f and returns f (f (f (f (· · · ))))”Alonzo Church1903–1995Professor at Princeton (1929–1967)and UCLA (1967–1990)Invented the Lambda CalculusHad a few successful graduate students, includingÏStephen Kleene (Regular expressions)ÏMichael O. Rabin†(Nondeterministic automata)ÏDana Scott†(Formal programming language semantics)ÏAlan Turing (Turing machines)†Turing award winnersTuring Machines vs. Lambda CalculusIn 1936,ÏAlan Turing invented the TuringmachineÏAlonzo Church invented thelambda calculusIn 1937, Turing proved that the two models were equivalent,


View Full Document

Columbia COMS W4115 - The Lambda Calculus

Documents in this Course
YOLT

YOLT

13 pages

Lattakia

Lattakia

15 pages

EasyQL

EasyQL

14 pages

Photogram

Photogram

163 pages

Espresso

Espresso

27 pages

NumLang

NumLang

6 pages

EMPATH

EMPATH

14 pages

La Mesa

La Mesa

9 pages

JTemplate

JTemplate

238 pages

MATVEC

MATVEC

4 pages

TONEDEF

TONEDEF

14 pages

SASSi

SASSi

16 pages

JTemplate

JTemplate

39 pages

BATS

BATS

10 pages

Synapse

Synapse

11 pages

c.def

c.def

116 pages

TweaXML

TweaXML

108 pages

Load more
Download The Lambda Calculus
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view The Lambda Calculus and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view The Lambda Calculus 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?