Как использовать функцию DOC Clojure?
-
26-10-2019 - |
Вопрос
Я только начинаю с Clojure и не могу получить доступ к функции DOC.
Я использую Clojure 1.3 с Emacs24 и Swank-Clojure.
user> *clojure-version*
{:major 1, :minor 3, :incremental 0, :qualifier nil}
Но когда я пытаюсь:
(doc doc)
Я получил:
Unable to resolve symbol: doc in this context
[Thrown class java.lang.RuntimeException]
я прочел Почему Repl рассматривает Clojure.core/Doc как вар? и, как предполагалось:
(clojure.repl/doc doc)
Но тогда я получаю:
clojure.repl
[Thrown class java.lang.ClassNotFoundException]
Кажется, я не «импортирую» обычные пространства имен, но на самом деле не знаю, как это сделать.
Спасибо.
ОБНОВИТЬ
Используя Clojure из Java (java -jar ...), он работает хорошо, так что это проблема с установкой Emacs.
Решение
Вам нужно так или иначе захватить пространство имен Clojure.repl:
Из реплики
user> (use 'clojure.repl)
user> (doc doc)
или в вашей программе
(ns foobar
(:use [clojure.repl]))
Другие советы
Добавьте следующее в свой файл Leiningen user.clj (на Mac/linux, это ~/.lein/user.clj):
;; ~/.lein/user.clj
(if (>= (.compareTo (clojure-version) "1.3.0") 0)
(do (use 'clojure.repl)
(use 'clojure.java.javadoc)))
Это заставит Лейнинген автоматически импортировать эти два пространства имен при запуске для проектов с использованием Clojure 1.3.0, а затем (но не для проектов, использующих Clojure 1.2.1 или раньше - где DOC и Source всегда были доступны).
Кредит идет Мэтью Бостон для этого. Примечание также Ответ Фила Хагелберга который указывает на большую часть функциональности, специфичной для реплики, доступна непосредственно в Emacs / Slime без необходимости непосредственно в реплике.
По состоянию на Lein 2 пространства имен могут быть автоматически импортированы при запуске, используя :injections
, например:
;; ~/.lein/profiles.clj
{:user {:plugins [[lein-swank "1.4.4"]
[lein-noir "1.2.1"]
[lein-pprint "1.1.1"]]
:injections [(use 'clojure.repl)
(use 'clojure.java.javadoc)
(use 'clojure.pprint)] }}
Но см. Другие ответы для слизи эквивалентов.
Я не уверен в том, когда это стало так, но как Лейн 2.2 док доступен в Reply по умолчанию.