Я экспериментировал с clojure.spec, и я думал, что я хотел бы написать макрос, чтобы сэкономить утомительной набрав :-)clojure: как передать пространство имен в качестве параметра макроса?
Я пытаюсь сделать это:
(defmacro nup
[pns pname punit]
`(s/def :~pns/name (s/and #(string? %) #(= % ~pname)))
`(s/def :~pns/unit (s/and #(string? %) #(= % ~punit))))
Я пытался несколько но я не могу сделать замену пространства имен. Есть идеи? Излишне говорить, что макросы не моя сильная сторона.
Вам не нужен макрос для любого из этого, просто выполните 's/def' в функции. – ClojureMostly