Matthew Flatt


Let’s Build a Hygienic Macro Expander!

January 12, 2017 at 3:30pm
CSE 305


Racket provides a smooth path from simple language extensions to whole new programming languages by building on a foundation of hygienic macro expansion. Hygienic macros make pattern matching and template substitution robust against choices of variable names, much in the same way that lexical scope enables function composition independent of local variable names. Compared to lexical scope, however, hygienic expansion relies on an extra dimension of binding that can seem mysterious. This talk aims to dispel that mystery through an explanation of hygienic expansion in terms of scopes sets and by walking through the implementation of a macro expander in terms of scope sets.


Matthew Flatt is a professor in the School of Computing at the University of Utah, where he works on extensible programming languages, runtime systems, and applications of functional programming. He is one of the developers of the Racket programming language.