据我所知,换能器是一种在reduce发生之前转换减速器功能的函数。换句话说,(transduce transducer reducer collection)等同于(reduce (transducer reducer) collection)。所以这两个表达式
(reduce ((map inc) -) 0 [3 4 5])
(transduce (map inc) - 0 [3 4 5])必须返回相同的值。对吗?
不对
(reduce ((map inc) -) 0 [3 4 5]) -15
(transduce (map inc) - 0 [3 4 5]) 15窃听器还是特征?我的Clojure版本是1.8.0。
发布于 2016-08-07 00:48:15
结果是,(transduce)实现了一个稍微不同的算法。
(reduce)为集合中的每个元素调用(reducer aggregate element)。总共有一个n调用一个n元素集合。
(transduce)对每个元素调用(reducer aggregate element),然后出于某种原因再次调用(reducer aggregate),进行n+1调用。因此,(transduce)不像(-)所期望的那样工作。
https://stackoverflow.com/questions/38809642
复制相似问题