COMS W4115
Programming Languages and Translators
Lecture 21: April 13, 2015
Introduction to the Lambda Calculus

Outline

  1. History of the lambda calculus and functional programming languages
  2. CFG for the lambda calculus
  3. Function abstraction
  4. Function application
  5. Free and bound variables
  6. Beta reductions
  7. Evaluating a lambda expression
  8. Currying
  9. Renaming bound variables by alpha reduction
  10. Eta conversion
  11. Substitutions
  12. Disambiguating lambda expressions
  13. Normal form
  14. Evaluation strategies

1. History of the Lambda Calculus and Functional Programming Languages

2. CFG for the Lambda Calculus

3. Function Abstraction

4. Function Application

5. Free and Bound Variables

6. Beta Reductions

7. Evaluating a Lambda Expression

8. Currying

9. Renaming Bound Variables by Alpha Reduction

10. Eta Conversion

11. Substitutions

12. Disambiguating Lambda Expressions

13. Normal Form

14. Evaluation Strategies

15. Practice Problems

  1. Evaluate (λx. λy. + x y)1 2.
  2. Evaluate (λf. f 2)(λx. + x 1).
  3. Evaluate (λx. (λx. + (* x 1)) x 2) 3.
  4. Evaluate (λx. λy. + x((λx. * x 1) y))2 3.
  5. Is (λx. + x x) η-convertible to (+ x)?
  6. Show how all bound variables in a lambda expression can be given distinct names.
  7. Construct an unambiguous grammar for lambda calculus.

16. References



aho@cs.columbia.edu