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