 
Summary: The Lazy Lambda Calculus
Samson Abramsky
Department of Computing
Imperial College of Science, Technology and Medicine
Published in Research Topics in Functional Programming, ed. D. Turner,
pages 65{117, Addison Wesley 1990
December 17, 1987
1 Introduction
The commonly accepted basis for functional programming is the calculus; and it is folklore
that the calculus is the prototypical functional language in puried form. But what is the
calculus? The syntax is simple and classical; variables, abstraction and application in the
pure calculus, with applied calculi obtained by adding constants. The further elaboration of the
theory, covering conversion, reduction, theories and models, is laid out in Barendregt's already
classical treatise [Bar84]. It is instructive to recall the following crux, which occurs rather early
in that work (p. 39):
Meaning of terms: rst attempt
The meaning of a term is its normal form (if it exists).
All terms without normal forms are identied.
This proposal incorporates such a simple and natural interpretation of the calculus as a pro
gramming language, that if it worked there would surely be no doubt that it was the right one.
