(async/into []) is probably the closest thing to doall
On Mon, Apr 7, 2014 at 11:46 AM, Alejandro Ciniglio <[email protected]>wrote: > Sure, except you can use doall to realize the sequence from map, but > there's no equivalent for core.async.map<. I guess you could wrap it in > something that constantly tries to read from the output channel? > > On Apr 7, 2014, 1:39 PM, Timothy Baldridge wrote: > > That's the case with clojure.core.map as well, don't consume the lazy > seq the side effects aren't run...in short, map is not for side effects. > > > > On Mon, Apr 7, 2014 at 11:32 AM, Alejandro Ciniglio <[email protected]>wrote: > >> Yeah, that seems to be the best practice that's promoted as well. Another >> gotcha with this implementation is that since it's done via extending the >> channel protocol (specifically take!), it doesn't actually apply the >> functions effects unless someone is reading from the channel. This could be >> an issue if you want side-effects only from the map< call. >> >> >> On Monday, April 7, 2014 11:36:21 AM UTC-4, James Reeves wrote: >> >>> This looks like a bug to me. A lot of the internal core.async >>> functions rely on nil values indicating the channel is closed. >>> >>> - James >>> >>> >>> On 7 April 2014 16:26, Alejandro Ciniglio <[email protected]> wrote: >>> >>>> Using core.async, I've understood the convention to be that if you >>>> take nil from a channel, that channel is closed. This seems to hold for >>>> most cases, but I've found a corner case when using map< that lets you pull >>>> nil from a channel that is not closed. >>>> >>>> (def a (chan)) >>>> (def c (map< seq a)) >>>> (go (prn (<! c))) >>>> (>!! a []) >>>> ; => nil nil ;; [one nil is printed, one is returned] >>>> (go (prn (<! c))) >>>> (>!! a [1]) >>>> ; => nil (1) >>>> >>>> This can be chained as well (e.g. (map< identity (map< seq a)) ), and >>>> nils just flow through. >>>> >>>> From looking at the implementation, it's apparent that this happens >>>> because the function application of map happens when taking from the output >>>> channel so nil is not technically on the channel, (unless it flows through >>>> to another map). >>>> >>>> Is this a bug or is my mental model of nil => closed incorrect? >>>> >>>> Thanks, >>>> Alejandro >>>> -- >>>> 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. >>>> >>> >>> -- >> 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. >> > > > > -- > "One of the main causes of the fall of the Roman Empire was that-lacking > zero-they had no way to indicate successful termination of their C > programs." > (Robert Firth) > -- > 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 a topic in the > Google Groups "Clojure" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/clojure/Hnjg9ovh0uA/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > > For more options, visit https://groups.google.com/d/optout. > > -- > 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. > -- "One of the main causes of the fall of the Roman Empire was that-lacking zero-they had no way to indicate successful termination of their C programs." (Robert Firth) -- 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.
