Backquote and Commas Defmacro Macro definitions are similar to function definitions, but there are some crucial differences. A macro is a piece of code that creates another lisp object for evaluation.
Macro expansion happens before any arguments are evaluated.
Because expansion occurs prior to evaluation, arguments passed to a macro will not necessarily be evaluated. This result is that macros behave rather differently from functions. Because macros do not evaluate all their arguments, they can result in more efficient code.