Clojure defmacro теряет метаданные

я пытаюсь создать небольшой макрос Clojure, который def sa String с подсказкой типа:

(defmacro def-string [name value]
  `(def ^String ~name ~value))

(def-string db-host-option "db-host")

Когда я macroexpand it, подсказка типа теряется:

(macroexpand '(def-string db-host-option "db-host"))
;=> (def db-host-option "db-host")

Неважно мудрость подсказки типа.

Почему макрос теряет метаданные? Как мне написать этот макрос или любой другой, содержащий метаданные?

24
задан Ralph 13 October 2011 в 12:53
поделиться