проблема в макросе clojure, создающем символы для каждого элемента в массиве карты - PullRequest
0 голосов
/ 01 марта 2019

В основном я новичок в макросе и пытаюсь в макросе создать символы из массива карт и получить ошибку: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])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...