Получение исключения 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]))