in lisp →
from Pascal Costanza:
"Macros in Common Lisp are not like macros in C! As far as I understand, macros in C process sequences of characters and don't know anything about the structure of the programs they manipulate. In contrast, macros in Common Lisp operate on the very structure of programs. This is possible, again, because code and data are treated uniformly in Lisp. So, a program is a list of forms and, of course, macros can manipulate lists of forms like any other list."
and:
"Macros can be understood as functions which accept code as arguments and in turn generate new code. If an application of a macro is found at compile-time then the respective form is passed to the macro and its result replaces this very form. Compilation then continues with the new form. (This process is called "macro expansion".)"
On Lisp PG p82+
a function that generates lisp code
"a macro produces expressions which when evaluated, produce results"
p25/116 - embedded language is implicitly compiled, by compiling code which does the transformation