reduce-kv
在优先级映射上调用reducing函数时,为什么要以item作为键,priority作为值(源代码),而不是使用映射的键和值。调用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应该如何工作?