@Alex:
Noted.
In practice, it's not much of a problem to me, since objects I'm sending
over the channel are of the form:
{:tag :message
:return-chan ...
:data ... actual message }
On Tue, Jan 14, 2014 at 5:39 AM, Alex Miller <[email protected]> wrote:
> Two notes:
>
> 1)The provided core.async go-loop macro is a small enhancement for the (go
> (loop )) case.
> 2) Be careful using when using falsey tests like when or if - these will
> stop on nil but will also stop on false coming through the channel. Might
> be ok here, but it's something to be aware of.
>
> Alex
>
>
> On Monday, January 13, 2014 11:45:52 PM UTC-6, Mark Mandel wrote:
>
>> I found this macro I wrote really useful for exactly this type of thing:
>> https://github.com/markmandel/while-let
>>
>> As long as you are happy for your go loop to stop when nil comes through
>> (i.e. when it gets closed).
>>
>> (go (while-let [data (<! (channel))]
>> (println data)))
>>
>>
>> Mark
>>
>>
>> On Tue, Jan 14, 2014 at 4:34 PM, t x <[email protected]> wrote:
>>
>>> Understood. Thanks for the clarification.
>>>
>>>
>>> On Mon, Jan 13, 2014 at 9:28 PM, Ben Mabey <[email protected]> wrote:
>>>
>>>> On Mon Jan 13 18:11:10 2014, t x wrote:
>>>>
>>>>> Consider the following code block:
>>>>>
>>>>>
>>>>> (defn make-stupid []
>>>>> (go (loop []
>>>>> (recur))))
>>>>>
>>>>> (def x (make-stupid))
>>>>>
>>>>> ;; ... is there a way to kill this infinite go-loop ?
>>>>>
>>>>
>>>> No, you can not kill the loop with the go channel that is bound to x.
>>>> You need to return a stop, a.k.a. poison, channel that the go block checks
>>>> before recurring. Something like:
>>>>
>>>> (let [stop (chan)]
>>>> (go
>>>> (loop []
>>>> (when (alt! stop false :default :keep-going)
>>>> ...
>>>> (recur))))
>>>> stop)
>>>>
>>>> -Ben
>>>>
>>>>
>>>> --
>>>> --
>>>> 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/groups/opt_out.
>>>>
>>>
>>> --
>>> --
>>> 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/groups/opt_out.
>>>
>>
>>
>>
>> --
>> E: [email protected]
>>
>> T: http://www.twitter.com/neurotic
>> W: www.compoundtheory.com
>>
>> 2 Devs from Down Under Podcast
>> http://www.2ddu.com/
>>
> --
> --
> 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/groups/opt_out.
>
--
--
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/groups/opt_out.