我正在尝试创建一个宏来检查传入的函数定义。我是 lisp 新手,我在检查 defun 是否是列表中的第一个元素时遇到了困难
(defmacro check (fun-param)
(first fun-param)
)
(format t "~a~%" (check '(defun my-function (x y))))
从此我期望得到“defun”,但我得到 quote is unbound 错误。然后我在
eval
中使用 first
来评估它,但我得到了“defun”未绑定错误。我尝试了很多步骤,例如检查参数是否是带有 (listp fun-param)
的列表。
我想做的是检查第一个元素是否是“defun”,我尝试过
(if (equal (first fun-param) "defun"))
但它也不起作用,所以我想要一些关于正在发生的事情的指导。我调用检查宏的方式就是我被要求调用它的方式,因此不会改变。
宏应该返回要执行的新代码。使用反引号返回带有模板的代码。
(defmacro check (fun-param)
`(first ,fun-param)
)