我想创建像定义宏这样的方案,这是我的尝试:
(defmacro define [list & body]
`(defn ,(first list) [~@(rest list)] ~body))
但是当我跑步时:
(定义(foo a b)(+ a b))
我收到了错误:java.lang.Exception: First argument to def must be a Symbol (NO_SOURCE_FILE:18)
我的宏有什么问题?
答案 0 :(得分:4)
您需要使用~
取消引用符号名称:
(defmacro define [list & body]
`(defn ~(first list) [~@(rest list)] ~@body))