Leiningen REPL не автозагружает пространство имен project.core
Я новичок в Clojure, поэтому это может быть очень простым вопросом. У меня проблема с REPL при использовании Leiningen.
Раньше я создавал проект app
, следуя руководству. Когда я запустил REPL с использованием lein repl
с этим проектом, он всегда автоматически помещал меня в пространство имен основного ядра проекта. Несмотря на то, что я был в этом пространстве имен, я мог бы получить доступ к встроенным ресурсам, например (doc build-in-function-name)
и т.д.
Теперь я создал другой проект без приложения, и я, кажется, потерял эту возможность автозагрузки. Я теперь помещается в user
пространстве имен по умолчанию. Кроме того, когда я пытаюсь получить доступ к пространству имен основного ядра проекта, выполняя (in-ns 'project.core)
, я теряю доступ к встроенным функциям, таким как doc
.
Может ли кто-нибудь объяснить, что здесь происходит?
in-ns
не загружает код. Он переключается на ns, создавая его, если необходимо. Он также не выполняет установку по умолчанию ns (например, ссылается на clojure.core). Правильный способ загрузки пространства имен из кода в repl выполняется с требованием (require 'some.ns)
, который затем может сопровождаться (in-ns 'some.ns)
если он преуспеет.
Вы можете использовать опцию :repl-options {:init-ns some.ns}
в project.clj, чтобы указать пространство имен, которое leiningen должно автоматически загружать в ваш repl. Когда это зависит от меня, я не использую этот параметр, потому что это мешает мне иметь полезную замену, если есть ошибка, которая предотвращает загрузку моего кода.
- Вопросы
- Read-eval-print-loop
- Leiningen REPL не автозагружает пространство имен project.core