标签: macros common-lisp
以下代码的问题是多重评估:
(defmacro with-object (name &body body) `(let ((,name (create-object))) ,@body (free-object ,name)))
但是我不知道该怎么做。
答案 0 :(得分:2)
为了在代码的let绑定中使用名称,它必须包含一个符号。您提供的代码中应该没有多重评估问题,因为名称所包含的符号仅在扩展中被赋予了绑定,并在该绑定的上下文中针对自由对象调用进行了评估。