{{clojure.data/diff}} 在第 118 行定义了
java.util.Map (diff-similar [a b] (diff-associative a b (set/union (keys a) (keys b))))
由于 {{keys}} 返回一个键序列,这似乎像是一个错误。{{clojure.set/union}} 对于非集合对象表现得奇怪且不一致,并且在这种情况下,两个键序列被连接起来。根据初步的基准测试,这似乎表明这个(可能是)错误在图(可能)键(可能)不具有共同属性时会产生轻微的性能提升,而当图(可能)属性相同时,可能会造成显著的性能损失。由于在 {{diff-associative}} 中的合并 reduce,结果仍然正确。
补丁很简单(只需要对每个键序列调用 set)。