| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] | 
  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.