(def ^{:doc "Implements Fib. sequence lazily."} fibs ...)
(:doc (meta (var fibs)))
; "Implements Fib. sequence lazily."
Достаточно просто написать макрос, чтобы вы могли написать (def-with-docs foo "doc" 1)
.
(defmacro def-with-docs [name docstring value]
`(def ~(with-meta name {:doc docstring}) ~value))
(def-with-docs fib-seq "Implements Fibbonaci sequence (starts with 0)."
((fn rfib [a b] (lazy-seq (cons a (rfib b (+ a b))))) 0 1))
(:doc (meta (var fib-seq)))
; "Implements Fibbonaci sequence (starts with 0)."
Также обратите внимание, что в вашем примере использования defn
строка документации должна предшествовать аргументам, иначе она не будет связана с метаданными символа.
В качестве альтернативы можно использовать clojure.contrib.def / defvar .