13 Macros

Macros enable you to define new control constructs and other
language features. A macro is defined much like a function, but instead
of telling how to compute a value, it tells how to compute another Lisp
expression which will in turn compute the value. We call this
expression the expansion of the macro.

Macros can do this because they operate on the unevaluated expressions
for the arguments, not on the argument values as functions do. They can
therefore construct an expansion containing these argument expressions
or parts of them.

If you are using a macro to do something an ordinary function could
do, just for the sake of speed, consider using an inline function
instead. See Inline Functions.