В clojure
, apply
нельзя применить к макросу. Например, (apply and [true false])
вызывает исключение. Я думал о следующем обходном пути:
(defmacro apply-macro[func args] `(~func [email protected]))
На первый взгляд это выглядело очень хорошо:
(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
?