1 Example Racket Languages
1.1 Racket Variants
1.2 Changing the Surface Syntax
1.3 Changing the Evaluation Model
2 From Syntactic Abstraction to Language Construction
2.1 Syntactic Abstraction
2.2 Language Extension
2.3 Language Construction
3 A Model of Expansion
3.1 An Interpreter
3.2 A Parser
3.3 Desugaring
3.4 Quasiquotation
3.5 Macros
3.6 Exercises