Macro system booklet erkin (09 Feb 2020 20:44 UTC)
Re: Macro system booklet Arthur A. Gleckler (09 Feb 2020 21:16 UTC)
Re: Macro system booklet Lassi Kortela (14 Feb 2020 18:28 UTC)
Re: Macro system booklet Lassi Kortela (14 Feb 2020 18:29 UTC)
Re: Macro system booklet Arthur A. Gleckler (14 Feb 2020 20:06 UTC)

Macro system booklet erkin 09 Feb 2020 20:44 UTC

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