当前函数 clojure.core/load-libs 将 '(a.namespace.name) 作为前缀列表处理,所以这种结构没有任何作用(就像是一个不带后缀的前缀列表)。同时 '(link: a.namespace.name) 导致调用 require (require 'a.namespace.name')。在其他情况下,require 或 use 函数对 (link: ) 和 () 的区别是模糊的。在这种情况下,空操作和库加载之间存在差异。例如,Clojure 校验工具 Eastwood 包含适用于这种情况的规则,因为 (require '(a.namespace.name)) 的行为并不明显。
建议的更改可以避免 require 或 use 调用中的这种特殊情况(包括由 ns 宏展开引起的)。接受列表和向量的库规范使行为一致,并类似于前缀列表中处理后缀项的方式。
补丁是最小的,以避免在 clojure/core.clj 中重新排序 sequential? 函数。
我应该包括对这些情况的测试吗?