以下代码失败(在 1.6 和最新的 1.7-alpha4 中都失败)
`
user=> (ns foo)
nil
foo=> (def inc inc)
WARNING: inc 已经在命名空间: foo 中引用: #'clojure.core/inc,将被: #'foo/inc 替换
'foo/inc
;; 注意 inc 在这个点上是未绑定的,这导致了下面的异常
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