Copyright (C) 2000-2012 |
GNU Info (elisp)Simple MacroA 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'. automatically generated by info2www version 1.2.2.9 |