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. ____________________ Racket Users list: http://lists.racket-lang.org/users