Fantastic practical example of lisp macros, complete with examples of expansion: http://t.co/7jPdFgDPWQ
miniblog.
Related Posts
TIL eager macro expansion can mean very different things.
Rust macros must expand to valid code, so eager macro expansion allows illegal intermediate states: https://docs.rs/eager/0.1.0/eager/macro.eager.html#macro-expansions
Elisp macros are expanded at runtime unless expansion is eager:
Common Lisp has a type of macro that I've never seen before, called a 'symbol macro'. This is like a normal macro, where you define an expansion for a symbol, but if the symbol is let-bound, it stays as a plain variable!
https://clhs.lisp.se/Body/m_defi_1.htm
Magit tip: M-s and M-h show and hide changes, usually more conveniently than using M-1, M-2, M-3, or M-4 to explicitly set expansion levels.