As David said, binding preservation works with Clojure, not with
ClojureScript. That being said, while I can see a use for bindings in
Clojure (thread-local redef), I fail to see a use-case for binding in
ClojureScript. Seems like code could/should be structured in a better way.


On Thu, Sep 5, 2013 at 7:54 AM, Jacek Lach <jacek.k.l...@googlemail.com>wrote:

> That is not what happens in lein repl:
>
> user=> (use 'clojure.core.async)
> nil
> user=> (def pingc (chan))
> #'user/pingc
> user=> (def ^:dynamic *text* "OUPS BAD ASYNC")
> #'user/*text*
> user=> (binding [*text* "good boy"]
>   #_=>   (go (while true
>   #_=>         (<! pingc)
>   #_=>         (println *text*))))
> #<ManyToManyChannel
> clojure.core.async.impl.channels.ManyToManyChannel@79d236c2>
> user=> (defn ping [] (put! pingc :ping))
> #'user/ping
> user=> (ping)
> good boy
> nil
>
> It's of course up to core.async to preserve bindings within its body. But
> since it tries to pretend to run your `go` code 'as if it was synchronous',
> that's probably desirable?
>
>
> On Thursday, September 5, 2013 3:48:10 PM UTC+1, Meikel Brandmeyer
> (kotarak) wrote:
>>
>> Hi,
>>
>> Am Donnerstag, 5. September 2013 16:36:37 UTC+2 schrieb Mathias Picker:
>>>
>>> I just tried this test case (from Anderkent on IRC):
>>>
>>> (def pingc (chan))
>>>
>>> (def ^:dynamic *text* "OUPS BAD ASYNC")
>>>
>>> (binding [*text* "good boy"]
>>>   (go (while true
>>>         (<! pingc)
>>>         (js/alert *text*))))
>>>
>>> (defn ping []
>>>   (put! pingc :ping))
>>>
>>> (ping)
>>>
>>> and I get "OUPS BAD ASYNC".
>>>
>>> So, is this bug in cljs core.async?
>>>
>>>
>> This is to be expected, because the binding is reverted after the go call
>> returns. So the code in the go block (executed later on) sees the old,
>> initial binding.
>>
>> Meikel
>>
>>
>  --
> --
> 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/groups/opt_out.
>



-- 
“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/groups/opt_out.

Reply via email to