Форма (ns ...) предпочтительна, так как ваш код будет читаться легче. Все объявления пространства имен будут собраны в верхней части файла. Вы видите, как это обеспечивается компилятором в языках, подобных Java. Также содержащий макрос ns избавляет вас от необходимости заключать символы в кавычки. То же самое можно сказать об использовании, импорте, ссылке и т. Д.
Я думаю, что ярлык C-x C-e
slime отправит кусок кода на подключенный сервер-swank и оценит его. Например, форма:
(ns my.test
(:require [clojure.contrib.logging :as log])
(:import [java.io File]))
создаст новое пространство имен my.test, которое включает в себя журналирование contrib и файл java.io. Это не изменит пространство имен repl. Для этого нажмите C-c M-p
из файла, который вы редактируете, и вам будет предложено указать имя пространства имен этого файла для переключения (если вы еще не находитесь в этом пространстве имен). Нажмите ввод, чтобы выбрать. C-c C-z
должен переключиться на реплику. Теперь вместо приглашения user=>
вы должны увидеть my.test=>
, указывая, что вы находитесь в этом пространстве имен.
Рабочий процесс, который я настроил, состоит в том, чтобы скомпилировать весь файл при сохранении, используя:
(defun ed/clojure-compile-on-save (&optional args)
"Compile with slime on save"
(interactive)
(if (and (eq major-mode 'clojure-mode)
(slime-connected-p))
(slime-compile-and-load-file)))
(add-hook 'after-save-hook 'ed/clojure-compile-on-save)
Таким образом, когда я сохраняю файл, он компилируется и загружается swank-сервером, и я использую repl для экспериментов в пространстве имен, над которым я работаю.