[racket]  Another Canonical Use of Macros?
John Clements writes:
 > categorizing them in terms of the "three canonical categories" that
 > Matthias described--apologies if I'm misrepresenting him/you:
 > - changing evaluation order,
 > - implementing a data sublanguage, and
 > - creating new binding forms.
 > 
 > Some of the Rust macros seem to fall into a fourth category, which arises from the fact that certain things are not expressions:
 > 
 > - abstracting over things that are not expressions.
This looks like a generalization of "creating new binding forms". In
the Lisp family, binding forms are the major category of
non-expression forms.
Konrad.