Today I received my copies of Practical Foundations for Programming Languages, Second Edition on Cambridge University Press. The new edition represents a substantial revision and expansion of the first edition, including these:
- A new chapter on type refinements has been added, complementing previous chapters on dynamic typing and on sub-typing.
- Two old chapters were removed (general pattern matching, polarization), and several chapters were very substantially rewritten (higher kinds, inductive and co-inductive types, concurrent and distributed Algol).
- The parallel abstract machine was revised to correct an implied extension that would have been impossible to carry out.
- Numerous corrections and improvements were made throughout, including memorable and pronounceable names for languages.
- Exercises were added to the end of each chapter (but the last). Solutions are available separately.
- The index was revised and expanded, and some conventions systematized.
- An inexcusably missing easter egg was inserted.
I am grateful to many people for their careful reading of the text and their suggestions for correction and improvement.
In writing this book I have attempted to organize a large body of material on programming language concepts, all presented in the unifying framework of type systems and structural operational semantics. My goal is to give precise definitions that provide a clear basis for discussion and a foundation for both analysis and implementation. The field needs such a foundation, and I hope to have helped provide one.