This book is a landmark work of scholarship. In a single consistent framework Ramsey covers a huge range of topics in programming language design, implementation, and reasoning. We see functional, imperative, and object-oriented languages; we study garbage collection, control operators, type inference, and module systems; we use the key intellectual tools of type theory and semantics to understand and reason about our programs; and, crucially, we build everything. This is not a discursive overview: the book is full of code, extensively indexed and cross-referenced. We emerge with concrete implementations of languages that are carefully designed to demonstrate the key intellectual landmarks of different programming styles. Most important of all, in reading this book you are travelling in the company of a master of his craft, one who has distilled into these pages a lifetime of insightful reflection on the principled design and implementation of programming languages.' Simon Peyton Jones, Epic Games
Preface; Acknowledgments; Credits; Tables of judgment forms, important functions, and concrete syntax; List of symbols and notation; Introduction; Part I. Foundations: 1. An imperative core; 2. Scheme, S-expressions, and first class functions; 3. Control operators and a small-step semantics: μScheme+; 4. Automatic memory management; 5. Interlude: μScheme in ML; 6. Type systems for Impcore and μScheme; 7. ML and type inference; Part II. Programming at Scale: 8. User-defined, algebraic types; 9. Molecule, abstract data types, and modules; 10. Smalltalk and object orientation; Afterword; Bibliography; Key words and phrases; Concept index.