В clojure, как применить макрос к списку?
В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
?