reduce的文档字符串包括以下内容:"如果没有提供val,返回将f应用于coll中前两个元素的返回结果"。如果coll是一个序列,这是正确的,但如果是一个reducer则不正确。例如
user=> (->> (range 0 10 2) (reduce (fn[x y] (+ x y)))) 20 user=> (->> (range 0 10 2) (r/map #(/ % 2)) (reduce (fn[x y] (+ x y)))) ArityException 错误的参数数量(0)
应该更新文档字符串,使其明确指出,当没有提供初始种子值时,reducers(reducer)需要supporting一个0参数的重载,返回reduction操作的身份值。