你好,
我在使用 sorted-map
时遇到了一些奇怪的行为,我认为这可能是 bug 或文档不完整。
具体来说,当创建一个具有不同类型键的排序 cmap,如下所示: (sorted-map :k1 :v1 "k2" :v2)
时,使用类似 (:k1 (sorted-map :k1 :v1 "k2" :v2))
的方式查找会抛出异常: 无法比较 k2 与 :k1
。这可能是由于在 sorted-map
实现中使用了 compare
。
虽然全面支持异构键可能是首选行动(对我来说),但似乎更合理地要求 cmap 的键是可比较的,但据我认为这一点应在该文档中说明。
即使这是一个要求,似乎更符合 Clojure 的一般设计精神,在查找过程中返回 nil
,而不是抛出异常。在我看来,当向 cmap 添加无法与其他键比较的键时抛出异常似乎更有意义。您怎么看?
祝好,
Simon