Concepts introduction
The chapters in this part explain important programming machinery and theoretical tools:
- operational semantics describes execution rules
- CPS makes control continuation explicit
- defunctionalization turns known higher-order behavior into first-order data
- free monads represent effect syntax with sequencing
- expression-problem encodings manage extensibility
- referential transparency supports substitution
- confluence, traces, and bisimulation compare forms of behavior
These concepts are not replaced by Denotational Design. They are placed within it.
Concepts and Insights explain useful programming machinery. Denotational Design explains how to decide what machinery should preserve.
Use three questions while reading each chapter:
- Is this concept describing meaning, representation, execution, or a transformation between them?
- Which observations and equalities does it preserve?
- Is it the specification, one encoding of the specification, or one interpreter?
Several chapters were written before the book adopted this explicit semantic progression. Their examples retain an operational emphasis intentionally. The contextual links and Insights chapters connect them back to the semantic view.