Насколько я понимаю, преобразователь является функцией, которая преобразует функцию редуктора до 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
.
, кстати, это то, что «завершение» для - если вы используете 'transduce' с' (completeting -) 'вместо' -', вы получите ожидаемый результат – noisesmith