~/talk

Modern Macros

Talkat PADL 2023 · 2023-01-16..01-17· [compilers-and-language-design]
links:none on file
slides:none on file

Racket treats macros as an open front end to the compiler: the expander handles three concrete cases—macro call, macro definition (define-syntax), and core forms—and produces a well‑known IR; scope is tracked by syntax objects with scope sets so fresh names avoid capture automatically. The system uses define-syntax / syntax-parse and a module system that records compile‑time-of‑compile‑time dependencies (the DrRacket build even runs a ray tracer at compile time). This enables languages like Scribble, Redex, Typed Racket and IDE features such as IDE rename/refactoring to work reliably.

AI-written summary · about

  1. 0:00Welcome and introduction
  2. 3:23Modern macros as a compiler
  3. 8:06Language examples in Racket
  4. 10:56Technical aspects of expansion
  5. 14:44Macro definitions and usage
  6. 17:31Communication between macros
  7. 21:25Data structure: Syntax objects
  8. 25:44Scope management and hygiene
  9. 30:57Scope implementation details
  10. 37:06Pattern matching in macros
  11. 42:41Evaluation of macro code
  12. 44:17Dependency and module system
  13. 48:10Educational language design
  14. 52:24Typed Racket and Redex
  15. 54:10Future work and Q&A
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.