> However I disagree with your comment on the readability of thread-last.
What I especially don’t like about these macros is that each enclosed expression doesn’t have their main argument directly visible in the source code. Each expression is not a complete call. It’s easy to write a version where this would not be the case.
> I find it easiest to understand macros as a templating system
backquote templates and macros are orthogonal. Many macros use backquote templates, many not.
> In Emacs Lisp macros, the back quote (`) is saying “what follows is a template” and the comma is saying “insert contents here”.
Lisp source code is not really an Abstract Syntax Tree, since it does not represent much information about syntactic categories of the Lisp code. Lisp code is represented as s-expressions, but the actual Lisp syntax is defined on top of s-expressions. Example: names are represented as symbols, but it is not…