Types and programming languages - Pierce, Benjamin C. (MIT Press, 2002)
A type system is a syntactic method for authomatically checking the absence of certain erroneous behaviours by classifying program phrases according to the kinds of values they compute. The study of type systems-and of programming 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 implementations, available via the web. Dependencies between chapters are explicitly identified, allowing readers to choose a variety of paths through the material.