The lambda-calculus lies at the very foundations of computer
science. Besides its historical role in computability theory it has
had significant influence on programming language design and
implementation, denotational semantics, and domain theory. The book
emphasises the proof theory for the type-free lambda-calculus. The
first six chapters concern this calculus and cover the basic theory,
reduction, models, computability, and the relationship between the
lambda-calculus and combinatory logic. Chapter 7 presents a variety
of typed calculi; first the simply typed lambda-calculus, then
Milner-style polymorphism and, finally, the polymorphic
lambda-calculus. Chapter 8 concerns two variants of the type-free
lambda-calculus that have appeared in the research literature: the
lazy lambda-calculus, and the lambda sigma-calculus. The final
chapter contains references and a guide to further reading. There are
exercises throughout. In contrast to earlier books on these topics,
which were written by logicians, this book is written from a computer
science perspective and emphasises the practical relevance of many of
the key theoretical ideas. The book is intended as a course text for
final year undergraduates or first year graduate students in computer
science. Research students should find it a useful introduction to
more specialist literature.