为什么在priority-map上调用reduce-kv
时将item作为键、priority作为值传递给reducing函数(源代码reduce时会传递地图的键和值。我假设这与这个特定数据结构的起源有关,但我无法在clojure.data.priority-map命名空间中找到任何指向它的文档。以下是一个示例。
(def m
(clojure.data.priority-map/priority-map-keyfn-by first compare
:a [2 :apples] :b [1 :bananas]))
(reduce-kv
(fn [acc k v]
(assoc acc k v))
{} m)
=> {:b 1, :a 2}
(reduce
(fn [acc [k v]]
(assoc acc k v))
{} m)
=> {:b [1 :bananas], :a [2 :apples]}
这是预期行为吗?如果是,我们可以添加一些文档说明PersistentPriorityMap的reduce-kv应该这样工作吗?