我正在尝试创建一个bar
应该像这样使用的宏():
(let ((my-var "foo"))
(bar ("some")
:buzz (lambda () (format t "~a~%" my-var))))
宏应该基本上只是在考虑 MY-VAR 的情况下 FUNCALL lambda。
我想出的是:
(defmacro bar ((thing) &body body)
`(funcall (coerce (getf (list ,@body) :buzz) 'function)))
这有效,它打印“foo”。但我想知道这是否是这样做的,或者是否有更好的方法来做到这一点。