with-unique-names
Summary
Returns a body of code with each specified name bound to a similar name.
Signature
with-unique-names (&rest names) &body body => result
Arguments
names
The names to be rebound in body.
body
The body of code within which names are rebound.
Values
result
The result of evaluating body.
Description
Returns the body with each name bound to a symbol of a similar name (compare gensym
).
Example
After defining
(defmacro lister (p q)
(with-unique-names (x y)
`(let ((,x (x-function))
(,y (y-function)))
(list ,p ,q ,x ,y))))
the form (lister i j)
macroexpands to
(LET* ((#:X-88 (X-FUNCTION))
(#:Y-89 (Y-FUNCTION)))
(LIST i j #:X-88 #:Y-89))
LispWorks User Guide and Reference Manual - 20 Sep 2017