Playlist | schedule page slides as PDF |
Let-Macro 1 — sugar (2:30)
Starting with a typical variant of Curly, some thoughts on syntactic sugar that we might like to add. See core.rkt.
Let-Macro 2 — S-expressions, typed and untyped (3:39)
A refresher on S-expressions in Plait and an introduction to untyped S-expressions.
Let-Macro 3 — transformer functions (2:42)
Transformer functions on untyped S-expressions can be written using just a few using primitive operations.
Let-Macro 4 — case transformer (3:04)
Expanding the case form as an untyped S-expression.
Let-Macro 5 — extensible parser (4:29)
Making our language extensible by defining the parser to take a hook for S-expression rewrites. See core+case.rkt, core-extensible.rkt, and core-ext+case.rkt.
Let-Macro 6 — extensible language (2:57)
An extensible parser is nice, but an extensible language is better. To turn Curly into an extensible language, we’ll need S-expression values in Curly and a let-macro form.
Let-Macro 7 —
Adding S-expressions to Curly. See s-exp.rkt.
Let-Macro 8 — binding and expanding macros (7:28)
Changing the parser to support a let-macro form and to recognize uses of macro bindings. See let-macro.rkt.
Let-Macro 9 — parse let-macro (1:44)
A further look at the full parser implementation and tests.
Let-Macro 10 — gensym (2:19)
Using gensym to avoid accidental capture of variables in a macro expansion. See gensym.rkt.