Click here to order direct from MIT Press
A type system is a syntactic method for enforcing levels of abstraction in programs. The study of type systems--and of programming languages from a type-theoretic perspective--has important applications in software engineering, language design, high-performance compilers, and security.
This text provides a comprehensive introduction both to type systems in computer science and to the basic theory of programming languages. The approach is pragmatic and operational; each new concept is motivated by programming examples and the more theoretical sections are driven by the needs of implementations. Each chapter is accompanied by numerous exercises and solutions, as well as a running implementation. Dependencies between chapters are explicitly identified, allowing readers to choose a variety of paths through the material.
The core topics include the untyped lambda-calculus, simple type systems, type reconstruction, universal and existential polymorphism, subtyping, bounded quantification, recursive types, kinds, and type operators. Extended case studies develop a variety of approaches to modeling the features of object-oriented languages. (The full table of contents is available here.)
Benjamin C. Pierce is Professor of Computer and Information Science at the University of Pennsylvania.
"Types are the leaven of computer programming; they make it
digestible. This excellent book uses types to navigate the rich variety
of programming languages, bringing a new kind of unity to their usage,
theory, and implementation. Its author writes with the authority of
experience in all three of these aspects."
--Robin Milner, Computer Laboratory, University of Cambridge"Over the last two decades type theory has emerged as the central, unifying framework for research in programming languages. But these remarkable advances are not as well-known as they should be. The rapid advance of research on type systems for programming languages has far outpaced its dissemination to the rest of the field. No more. Pierce's book not only provides a comprehensive account of types for programming languages, but it does so in an engagingly elegant and concrete style that places equal emphasis on theoretical foundations and the practical problems of programming. This book will be the definitive reference for many years to come."
--Robert Harper, Professor, Computer Science Department, Carnegie Mellon University
--John Reynolds, School of Computer Science, Carnegie Mellon University
--Henk Barendregt, Faculty of Science, Mathematics, and Computer Science, University of Nijmegen, The Netherlands