Returns the
body
wrapped in a form which creates a unique name for each of the variables (compare with
gensym
) and binds these names to the values of the variables. This ensures that the body can refer to the variables without name clashes with other variables elsewhere.
(defmacro lister (x y)
(rebinding (x y)
'(list ,x ,y)))
the form
(lister i j)
macroexpands to
(LET* ((#:X-77 I)
(#:Y-78 J))
(LIST #:X-77 #:Y-78))
LispWorks User Guide and Reference Manual - 21 Dec 2011