Returns a body of code with each specified name bound to a similar name.
lispworks
with-unique-names (&rest names) &body body => result
names⇩ |
The names to be rebound in body. |
body⇩ |
The body of code within which names are rebound. |
result |
The result of evaluating body. |
The macro with-unique-names
returns body with each name in names bound to a symbol of a similar name (compare gensym).
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 - 01 Dec 2021 19:30:41