在 Practical Common Lisp 的第 8 章,宏:定义你自己的,我们定义一个宏with-gensyms
如下:
(defmacro with-gensyms ((&rest names) &body body)
`(let ,(loop for n in names collect `(,n (gensym)))
,@body))
的目的是(&rest names)
什么?如果我们用 just 替换它names
,效果似乎是一样的。在这两种情况下,我们都会传入要“gensym-ed”的符号列表。