以下代码失败(在1.6和最新的1.7-alpha4版本中均如此)
`
user=> (ns foo)
nil
foo=> (def inc inc)
WARNING: inc 已经在命名空间foo中引用为: #'clojure.core/inc,将替换为: #'foo/inc
'foo/inc
;; 注意在这一时刻 incalready unbound,这导致以下异常
foo=> inc
foo=> (ns bar)
nil
bar=> (require ['foo :refer ['inc]])
WARNING: inc 已经在命名空间bar中引用为: #'clojure.core/inc,将替换为: #'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