Hello everyone,
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:
* Introduction
** What is a macro?
** Metaprogramming
** Homoiconicity
* Legacy macros
** Textual substitution
** fexprs
** define-macro
* define-syntax
** Hygiene
** Syntax transformers
* Declarative macros (Macro-by-Example)
** syntax-rules
** syntax-case
** syntax-parse
* 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
* Conclusion
* Appendix A: Popular macros in different systems
* Appendix B: References and further reading
--
~erkin