[ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [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
.
Ce document a été généré par Eric Reinbold le 13 Octobre 2007 en utilisant texi2html 1.78.