Обычно у вас есть 3 способа загрузки файлов / библиотек в REPL:
- Используйте
- Требовать
- Импорт
Использование является самым мощным (и также самым опасным).
Require сообщает REPL, что вы собираетесь использовать элементы из этого пространства имен. Например:
(require 'clojure.string)
позволяет сделать:
(clojure.string/split "hi, reader" #",")
Use делает то же самое, что и Require, однако use также включает все переменные ns в ваше текущее пространство имен.
Импорт используется с библиотеками Java, например:
(import 'java.util.Date)
так что вы можете
(Date.)
Require (и, следовательно, Use) использует ряд других функций «под капотом»:
(require '[clojure.test :as test] :verbose)
(clojure.core/load "/clojure/template")
(clojure.core/load "/clojure/walk")
(clojure.core/in-ns 'clojure.template)
(clojure.core/alias 'walk 'clojure.walk)
(clojure.core/in-ns 'clojure.test)
(clojure.core/alias 'temp 'clojure.template)
(clojure.core/load "/clojure/test")
Таким образом, вы также можете смоделировать запрос, выполнив эти шаги вручную.
Еще одна интересная функция - файл загрузки
(load-file "src/mylib/core.clj")
и нагрузка
(load "address_book/core")
они загружают код Clojure из ресурсов в classpath. Путь интерпретируется как
относительный путь к классу, если он начинается с косой черты или относительно корня
каталог для текущего пространства имен в противном случае.
Если вы хотите загрузить что-нибудь более сложное, чем, скажем, 2 или 3 файла, я настоятельно рекомендую использовать Leiningen.
изменить: вы также можете использовать:
(add-classpath "file:///home/../.../src/")
Чтобы легко добавлять файлы в путь к классам, чтобы вы могли использовать их с require.