A Simple Example of a Macro
===========================
Suppose we would like to define a Lisp construct to increment a
variable value, much like the `++' operator in C. We would like to
write `(inc x)' and have the effect of `(setq x (1+ x))'. Here's a
macro definition that does the job:
(defmacro inc (var)
(list 'setq var (list '1+ var)))
When this is called with `(inc x)', the argument VAR is the symbol
`x'--_not_ the _value_ of `x', as it would be in a function. The body
of the macro uses this to construct the expansion, which is `(setq x
(1+ x))'. Once the macro definition returns this expansion, Lisp
proceeds to evaluate it, thus incrementing `x'.