Combinatory logic and lambda-calculus, originally devised in the 1920’s, have since developed into linguistic tools, especially useful in programming languages. The authors’ previous book served as the main reference for introductory courses on lambda-calculus for over 20 years: this long-awaited new version is thoroughly revised and offers a fully up-to-date account of the subject, with the same authoritative exposition. The grammar and basic properties of both combinatory logic and lambda-calculus are discussed, followed by an introduction to type-theory. Typed and untyped versions of the systems, and their differences, are covered. Lambda-calculus models, which lie behind much of the semantics of programming languages, are also explained in depth. The treatment is as non-technical as possible, with the main ideas emphasized and illustrated by examples. Many exercises are included, from routine to advanced, with solutions to most at the end of the book.

### Contents

Preface; 1. The λ-calculus; 2. Combinatory logic; 3. The power of λ and CL; 4. Computable functions; 5. Undecidability; 6. Formal theories; 7. Extensionality in λ-calculus; 8. Extensionality in CL; 9. Correspondence between λ and CL; 10. Simple typing, Church-style; 11. Simple typing, Curry-style in CL; 12. Simple typing, Curry-style in λ; 13. Generalizations of typing; 14. Models of CL; 15. Models of λ ; 16. Scott's D∞ and other models; Appendix 1. α-conversion; Appendix 2. Confluence proofs; Appendix 3. Normalization proofs; Appendix 4. Care of your pet combinator; Appendix 5. Answers to starred exercises; Bibliography; Index.