The λ-calculus is a family of prototype programming languages invented by a logician, Alonzo Church, in the 1930's. Their main feature is that they are higherorder; that is, they give a systematic notation for operators whose input and output values may be other operators. Also they are functional, that is they are based on the notion of function or operator and include notation for function-application and abstraction.
This book will be about the simplest of these languages, the pure λ-calculus, in which λ-terms are formed by application and abstraction from variables only. No atomic constants will be allowed.
λ-terms and their structure
Definition (λ-terms) An infinite sequence of term-variables is assumed to be given. Then linguistic expressions called λ--terms are defined thus:
each term-variable is a λ-term, called an atom or atomic term;
if M and N are λ-terms then (MN) is a λ-term called an application;
if x is a term-variable and M is a λ-term then (λx. M) is a λ-term called an abstract or a λ-abstract.
A composite λ-term is a λ-term that is not an atom.
Notation Term-variables are denoted by “u”, “v”, “w”, “x”, “y”, “z”, with or without number-subscripts. Distinct letters denote distinct variables unless otherwise stated.
Arbitrary λ-terms are denoted by “L”, “M”, “N”, “P”, “Q”, “R”, “S”, “T”, with or without number-subscripts. For “λ-term” we shall usually say just “term”.