Получение исключения IllegalStateException при перезагрузке пространства имен в REPL
Объявление моего пространства имен выглядит следующим образом:
(ns test.foo
(:use
[clj-http.client :only (get) :as client]
[net.cgrand.enlive-html :only (select) :as html]))
Он отлично работает в REPL, в первый раз, когда я его использую. Затем, когда я изменяю код и пытаюсь выполнить в REPL:
(use :reload 'test.foo)
Я получаю:
java.lang.IllegalStateException: get already refers to: #'clj-http.client/get in namespace: test.foo (foo.clj:1)
Я нахожусь в окнах против часовой стрелки, а также пробовал с leiningen (lein repl).
Ответы
Ответ 1
Невозможно сбрасывать ядро fns случайно. Вы должны быть четко о своих намерениях:
(ns test.foo
(:refer-clojure :exclude [get]) ; suppress the shadowing warning
(:require [clojure.core :as core]) ; allow to still reach clojure.core/get through core/get
(:use
[clj-http.client :only (get) :as client]
[net.cgrand.enlive-html :only (select) :as html]))