COMS W4115
Programming Languages and Translators
Lecture 22: April 17, 2013
Introduction to Lambda Calculus

Outline

1. The Evolution of Programming Languages

2. Programming Paradigms

3. History of Lambda Calculus and Functional Programming Languages

4. CFG for The Lambda Calculus

5. Function Abstraction

6. Function Application

7. Free and Bound Variables

8. Beta Reductions

9. Evaluating a Lambda Expression

10. Currying

11. Renaming Bound Variables by Alpha Reduction

12. Eta Conversion

13. Substitutions

14. Disambiguating Lambda Expressions

15. Normal Form

16. Evaluation Strategies

17. Practice Problems

  1. Evaluate (λx. λy. + x y)1 2.
  2. Evaluate (λf. f 2)(λx. + x 1).
  3. Evaluate (λ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.

18. References



aho@cs.columbia.edu