So should I open a bug on this map< behavior? This also breaks 
composability with things like filter< because they assume that nil being 
returned implies a closed channel, and proceed to close their output 
channel...

e.g.  

(filter< identity (map< seq c))

will close the output channel after something like (>!! c [])

On Monday, April 7, 2014 1:50:18 PM UTC-4, tbc++ wrote:
>
> (async/into []) is probably the closest thing to doall
>
>
> On Mon, Apr 7, 2014 at 11:46 AM, Alejandro Ciniglio 
> <skia...@gmail.com<javascript:>
> > 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 
>> <skia...@gmail.com<javascript:>
>> > 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 <skia...@gmail.com> 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 clo...@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+u...@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+u...@googlegroups.com. 
>>>>>
>>>>> 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 clo...@googlegroups.com<javascript:>
>>> Note that posts from new members are moderated - please be patient with 
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> clojure+u...@googlegroups.com <javascript:>
>>> 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+u...@googlegroups.com <javascript:>.
>>> 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 clo...@googlegroups.com<javascript:>
>> Note that posts from new members are moderated - please be patient with 
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+u...@googlegroups.com <javascript:>
>> 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 
>> clojure+u...@googlegroups.com <javascript:>.
>>
>> 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 clo...@googlegroups.com<javascript:>
>> Note that posts from new members are moderated - please be patient with 
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+u...@googlegroups.com <javascript:>
>> 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+u...@googlegroups.com <javascript:>.
>> 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 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.

Reply via email to