Hi all, Could I have some clarification on something, I know how to solve the issue I just want to make sure I understand the reasons behind it, given the following:
(def xf (comp (filter odd?) (map inc) (take 5))) (transduce xf + 0 (range 10)) I get the answer: => 30 Makes sense, now if I do this: (transduce xf - 0 (range 10)) I get the answer.... => 30 But... (reduce - 0 (eduction xf (range 10))) gives => -30 I can see why this is, looking at https://github.com/clojure/clojure/blob/010864f8ed828f8d261807b7345f1a539c5b20df/src/clj/clojure/core.clj#L6587 the binding ret in the let has the reduced value. This is then passed to the reducers arity-1 function, which preforms something equivalent to the following (- -30) to give 30. The reason for the arity-1 function is to complete/cleanup state as seen in the partition-all function https://github.com/clojure/clojure/blob/010864f8ed828f8d261807b7345f1a539c5b20df/src/clj/clojure/core.clj#L6954 As '-' historically had an arity-1 function we cannot update the behaviour, this may well be the case for other functions. Am I right in the above or am I missing something? Thanks, Mark -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.