Я пытаюсь выяснить, как быть более продуктивным с инструментами REPL в clojure, но я нахожу, как пространства имен работают в проекте lein довольно сложно.
Когда я настраиваю пространство имен, что-то вроде:
(ns example-ns.core
(:require [clojure.java.jdbc :as sql]))
А затем объявите некоторые функции в нем (именно то, что на самом деле не имеет значения для контекста этого поста).
(defn insert-something! [blah]
(sql/insert! db :tablename blah))
Если я затем пытаюсь ссылаться на что-то из этого пространства имен, мне приходится каждый раз вручную компилировать все, что я хочу.
(ns example-ns.other
(:require [example-ns.core :refer [insert-something!]]
[clojure.java.jdbc :as sql]))
Если я попробую что-то подобное, он скажет мне, что insert-something!
недоступен, если я не введу example-ns.core
и не скомпилирую его вручную.
Это необходимо? Или я упускаю что-то фундаментальное?
Это не было большим делом, когда я изучал предварительные вещи, но теперь это становится непригодным для использования, потому что я вручную перекомпилирую тонны материала снова и снова по мере роста проекта.
Это в контексте проекта lein в текстовом редакторе Atom с плагином Proto REPL.