Полагая doc-строки на данные vars, считается ли это идиоматическим?

Итак, я определил некоторые vars для хранения данных состояния в моем коде clojure. Я только что обнаружил, что могу добавить doc-строку для этих vars, например:

(def ^{:doc "Documentation for *my-var*"}
        *my-var*)

Это позволяет мне называть (doc *my-var*) в REPL. Это похоже на действительную и полезную вещь, но это не похоже на обычную практику в (ограниченном) коде, который я прочитал.

Является ли это рассмотренным идиоматическим clojure?

Ответы

Ответ 1

Также используется в пространствах имен Clojure (например, clojure.pprint):

(def
 ^{:doc "The base to use for printing integers and rationals."
   :added "1.2"}
 *print-base* 10)

Вы не можете использовать удобный макрос из clojure.contrib.def:

(defvar *my-var*
  nil
  "Documentation for *my-var*")

Ответ 2

Так как clojure 1.3, def разрешил необязательную docstring.

(def *my-var*
  "My var does cool things (it really doesn't)."
  nil)