Let-Macro 1 — sugar (2:58)
Our usual core language, and then some thoughts on syntactic sugar that we might like to add. See core.rkt.
Let-Macro 2 — extensible parser (4:51)
Making our language extensible by defining the parser to provide a hook for S-expression rewrites. See core+case.rkt, core-extensible.rkt, and core-ext+case.rkt.
Let-Macro 3 — S-expressions (4:34)
Adding S-expressions to our core language as a step toward making the language extensible. See s-exp.rkt.
Let-Macro 4 — binding and expanding macros (7:00)
Changing the parser to support a let-macro form and to recognize uses of macro bindings. See let-macro.rkt.
Let-Macro 5 — hygiene (2:01)
Using gensym to avoid accidental capture of variables in a macro expansion. See gensym.rkt.