I'm working on something that I felt was very necessary for Scheme: a general booklet generally explaining all extant macro systems of Scheme, with some historic background but without delving too deep into technical details.
I still have a bunch of stuff to learn (eg I don't fully understand syntactic closures) and I decided not to include everything there is to know about Racket's macro system, since it'd easily quadruple the scope of the booklet.
It's a fairly long-winded and ambitious project and I'm hoping I don't run out of wind before it's done. (It's only 5% complete.) I might do it in the form of a series of blogposts.
Once again, I'd appreciate feedback of all sorts.
Here's the hypothetical table of contents:
** What is a macro?
* Legacy macros
** Textual substitution
** Syntax transformers
* Declarative macros (Macro-by-Example)
* Procedural macros
** Renaming macros
*** Explicit renaming
*** Implicit renaming
** Syntactic closures
* Salt and pepper
** Syntax parameters (SRFI-139)
** Auxiliary syntax transformers
*** set! and rename transformers
** Using match in macros
* Plus ultra
** State machines
** Continuation passing style
* Appendix A: Popular macros in different systems
* Appendix B: References and further reading