以下代码失败(在1.6和最新的1.7-alpha4版中都如此)
`
user=> (ns foo)
nil
foo=> (def inc inc)
WARNING: inc已经引用: #'clojure.core/inc 在命名空间: foo, 正被替换为: #'foo/inc
'foo/inc
;; 注意此刻inc未绑定,这会导致以下异常
foo=> inc
foo=> (ns bar)
nil
bar=> (require ['foo :refer ['inc]])
WARNING: inc已经引用: #'clojure.core/inc 在命名空间: bar, 正被替换为: #'foo/inc
nil
bar=> (inc 8)
IllegalStateException 尝试调用未绑定函数: #'foo/inc clojure.lang.Var$Unbound.throwArity (Var.java:43)
`
进一步调查显示foo/inc未绑定
foo/inc
=> #
进一步调查还显示,将(def inc inc)替换为几乎任何其他内容,例如(def inc dec),(def inc clojure.core/inc)或(def inc (fn (link: n) (+ n 1))),都不会引发异常(但警告仍存在)。
我原本期望
a) foo/inc应该被绑定,并具有与clojure.core/inc相同的值
b) 使用foo/inc时无错误
c) bar/inc应绑定到foo/inc