Leiningen REPL не автозагружает пространство имен project.core

70
10

Я новичок в Clojure, поэтому это может быть очень простым вопросом. У меня проблема с REPL при использовании Leiningen.

Раньше я создавал проект app, следуя руководству. Когда я запустил REPL с использованием lein repl с этим проектом, он всегда автоматически помещал меня в пространство имен основного ядра проекта. Несмотря на то, что я был в этом пространстве имен, я мог бы получить доступ к встроенным ресурсам, например (doc build-in-function-name) и т.д.

Теперь я создал другой проект без приложения, и я, кажется, потерял эту возможность автозагрузки. Я теперь помещается в user пространстве имен по умолчанию. Кроме того, когда я пытаюсь получить доступ к пространству имен основного ядра проекта, выполняя (in-ns 'project.core), я теряю доступ к встроенным функциям, таким как doc.

Может ли кто-нибудь объяснить, что здесь происходит?

спросил(а) 2015-06-16T08:02:00+03:00 5 лет, 3 месяца назад
1
Решение
89

in-ns не загружает код. Он переключается на ns, создавая его, если необходимо. Он также не выполняет установку по умолчанию ns (например, ссылается на clojure.core). Правильный способ загрузки пространства имен из кода в repl выполняется с требованием (require 'some.ns), который затем может сопровождаться (in-ns 'some.ns) если он преуспеет.

Вы можете использовать опцию :repl-options {:init-ns some.ns} в project.clj, чтобы указать пространство имен, которое leiningen должно автоматически загружать в ваш repl. Когда это зависит от меня, я не использую этот параметр, потому что это мешает мне иметь полезную замену, если есть ошибка, которая предотвращает загрузку моего кода.

ответил(а) 2015-06-16T17:04:00+03:00 5 лет, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема