Я пытаюсь создать небольшой макрос Clojure, который def
a String с подсказкой типа:
(defmacro def-string [name value]
`(def ^String ~name ~value))
(def-string db-host-option "db-host")
Когда я macroexpand
он, подсказка типа теряется:
(macroexpand '(def-string db-host-option "db-host"))
;=> (def db-host-option "db-host")
Не обращайте внимания на мудрость типа, намекая на это.
Почему макрос теряет метаданные? Как написать этот макрос или любой, который включает метаданные?