halt-when does require some knowledge about the transducible context where
it is used, particularly because it will be exposed to the completed result
of the computation. I think it's really primarily applicable for something
like transduce (and not as much for into, sequence, eduction, or chan for
differing reasons).
(transduce (comp (halt-when :err) (map inc)) + 0
(range 5))
;;=> 15
(transduce (comp (halt-when :err) (map inc)) + 0
(concat (range 3) [{:err "oops"}] (range 3)))
;;=> {:err "oops"}
On Thursday, November 3, 2016 at 1:06:36 PM UTC-5, Leon Grapenthin wrote:
>
> What is the intended usage of halt-when?
>
> The naming of halt-when hints at imperative / non-collection contexts but
> I'm failing to guess what such a context could look like?
>
> What is an intended usecase for the default behavior "the input that
> triggered the predicate will be returned"?
>
> For collection contexts, it seems odd that the transduced result is not
> opaque to retf because it requires one to make the transducer depend on the
> later application which breaks promise/design of transducers as reusable
> algorithmic transformations in many contexts.
>
> To illustrate
>
> (into [] (halt-when true? conj) [false false true])
>
> Doesn't work because into internally uses transients. One has to
> (halt-when true? conj!), then [false false true] is returned - but it is a
> hack using the internals of into.
>
> (sequence (halt-when true? conj) [false false true])
>
> Returns (false false), a different result.
>
> For core.async channels I can imagine that it doesn't work at all, but
> have not tried.
>
--
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.