В основном я новичок в макросе и пытаюсь в макросе создать символы из массива карт и получить ошибку:CompilerException java.lang.IllegalArgumentException: Не знаю, как создать ISeq из: clojure.lang.Symbol
Но я могу заставить его работать для карты вместо массива карт и вызова(gensym-of-map ~ args ~ ctx)
Пожалуйста, помогите, как решить макрос gensym-of-amap
(defmacro gensym-of-amap[args ctx]
`(let [~@(mapcat (fn [[k v]] [k `~v]) ctx)]
(prn "access ~args via ~'aa ~'bb and ctx syms ~'a"))
)
(defmacro gensyms[ctx args]
`(let [] (fn ~args
(for [~'c '~ctx]
(gensym-of-amap ~args ~'c) ;run foreach ctx
))))
(def test-macro (gensyms [{a 1} {a 2}] [aa bb]))
(apply test-macro [1 2])