【发布时间】:2012-02-14 07:43:58
【问题描述】:
在clojure 中,apply 不能应用于宏。例如(apply and [true false]) 引发异常。我正在考虑以下解决方法:
(defmacro apply-macro[func args] `(~func ~@args))
乍一看,它似乎工作得很好:
(apply-macro and [true 5]); 5
(apply-macro and [true 5 0]); 0
(let [a 0] (apply-macro and [true a])); 0
但是,当我将一个指向向量的变量传递给它时,它崩溃了。
(let [a [true]] (apply-macro and a)); java.lang.IllegalArgumentException:
;Don't know how to create ISeq from: clojure.lang.Symbol
多么令人失望!!!!
知道如何修复apply-macro吗?
【问题讨论】:
标签: clojure