方案的宏像在clojure中的功能

时间:2015-08-20 13:56:35

标签: clojure macros scheme

我想创建像定义宏这样的方案,这是我的尝试:

(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)

我的宏有什么问题?

1 个答案:

答案 0 :(得分:4)

您需要使用~取消引用符号名称:

(defmacro define [list & body]
  `(defn ~(first list) [~@(rest list)] ~@body))