Looks like it's something that's changed over different clojure releases.
On Friday, January 25, 2019 at 3:35:58 PM UTC-8, Brian Craft wrote:
>
> From the docs:
>
> r/fold takes a reducible collection and partitions it into groups of
> approximately n (default 512) elements. Each group is reduced using the
> reducef function. The reducef function will be called with no arguments to
> produce an identity value in each partition. The results of those
> reductions are then reduced with the combinef (defaults to reducef)
> function. When called with no arguments, (combinef) must produce its
> identity element - this will be called multiple times. Operations may be
> performed in parallel. Results will preserve order.
>
> So, this seems to say r/fold will partition the collection and reduce each
> partition using the (reducef) as the init value.
>
> Then, all these intermediate results will be reduced with combinef, using
> (combinef) as the init value.
>
> However, in test it seems (reducef) is never called, and (combinef) is
> used as the init value for calls to reducef.
>
> (defn combinef
> ([] {:combine :f})
> ([acc v] acc))
>
> (defn reducef
> ([] {:reduce :f})
> ([acc v]
> (println "acc" acc "v" v)
> v))
>
> (clojure.core.reducers/fold combinef reducef ["foo" "bar"])
>
> ; outputs:
> acc {:combine :f} v foo
> acc foo v bar
> "bar"
>
> The accumulator in reducef is the init value from combinef, not the init
> value from reducef.
>
> What's going on?
>
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.