Review of previous edition: 'Harper's book provides a comprehensive treatment of the foundations of computation. He touches on a surprising range of concepts that arise in language design: from simple types to polymorphism to dependent types to modules; from strict to lazy to parallel computation; and from proof techniques for reasoning about extensional behavior to practical, compositional cost models in the presence of garbage collection. More importantly, throughout the book he uses types and the principles of type theory to organize the material and help us discover the orthogonal, composable abstractions that arise naturally not only in the design of programming languages but also in logics and mathematics. This approach helps uncover the fundamental structure lurking inside programming languages of today, and provides a principled approach to the designs for tomorrow.' Greg Morrisett, Cornell University, New York
1. Judgment and rules; 2. Statics and dynamics; 3. Total functions; 4. Finite data types; 5. Types and propositions; 6. Infinite data types; 7. Variable types; 8. Partiality and recursive types; 9. Dynamic types; 10. Subtyping; 11. Dynamic dispatch; 12. Control flow; 13. Symbolic data; 14. Mutable state; 15. Parallelism; 16. Concurrency and distribution; 17. Modularity; 18. Equational reasoning; 19. Appendices.
Harper, Robert Robert Harper is a professor in the computer science department at Carnegie Mellon University, Pennsylvania. His main research interest is in the application of type theory to the design and implementation of programming languages and to the mechanization of their meta-theory. Harper is a recipient of the Allen Newell Medal for Research Excellence and the Herbert A. Simon Award for Teaching Excellence, and is an Association for Computing Machinery Fellow.