where the author says """Macros are the single greatest advantage that
lisp has as a programming language and the single greatest advantage
of any programming language. With them you can do things that you
simply cannot do in other languages."""
but it is possible to write programs that assert new clauses in
Prolog.
So, from my perspective, the macro facility of Lisp, can be emulated
in Prolog.
Take a look at the term expansion mechanism available in some Prolog
compilers.
Cheers,
Paulo
... and goal expansion...
See "The Kraft of Prolog"; there is quite a bit about term expansion
and using them as "prolog macro"
A.L.