Ah, that makes total sense.
Thanks for the assistance!
best,
Alex
On Saturday, October 17, 2015 at 7:35:00 AM UTC-4, Nicola Mometto wrote:
>
>
> The `reduced?` check is there in case somebody returns a `reduced` as
> acc value from the reducing function, as a way to terminate the
> reduction early:
>
> user=> (reductions (fn [_ x] (if (= 10 x) (reduced x) x)) (range))
> (0 1 2 3 4 5 6 7 8 9 10)
>
> deref is the way to retrieve the value of a reduced object:
> user=> (deref (reduced 1))
> 1
>
>
> Alex Eberts writes:
>
> > Hi All,
> >
> > Could someone please explain why reduced? is being used in the
> reductions
> > function (below)? From what I understand reduced? checks if there has
> been
> > a call to reduced and I don't see where that might be happening.
> >
> > Also, why is the deref macro being used with init?
> >
> > thanks,
> > Alex
> >
> >
> > (defn reductions
> > "Returns a lazy seq of the intermediate values of the reduction (as
> > per reduce) of coll by f, starting with init."
> > {:added "1.2"}
> > ([f coll]
> > (lazy-seq
> > (if-let [s (seq coll)]
> > (reductions f (first s) (rest s))
> > (list (f)))))
> > ([f init coll]
> > (if (reduced? init)
> > (list @init)
> > (cons init
> > (lazy-seq
> > (when-let [s (seq coll)]
> > (reductions f (f init (first s)) (rest s))))))))
> >
> > from:
> >
> https://github.com/clojure/clojure/blob/clojure-1.7.0/src/clj/clojure/core.clj#L6921
>
>
> --
>
--
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.