Re: RFC: laziness-safe, semi-dynamic environment Var(Lite)

2009-10-04 Thread Timothy Pratley
I'm more interested in the compiler being able to detect obvious (to it, not me) errors. Example 1: user= (await1 (binding [*warn-on-reflection* true ] (send (agent 0) # (if *warn-on-reflection* (inc %) (dec %) #ag...@238a47: -1 user= (await1 (send (agent 0) #(binding

Re: RFC: laziness-safe, semi-dynamic environment Var(Lite)

2009-10-02 Thread Meikel Brandmeyer
Hi, Am 01.10.2009 um 19:08 schrieb Rich Hickey: It simply doesn't compose or flow. Making the nil env special (e.g. non-replacing) just moves the problem into higher-order functions that use the construct: (defn needs-x [] (use-env-x)) (defn needs-y [] (use-env-y)) (defn foo [] (with-env

Re: RFC: laziness-safe, semi-dynamic environment Var(Lite)

2009-10-02 Thread Rich Hickey
On Oct 2, 12:23 pm, Meikel Brandmeyer m...@kotka.de wrote: Hi, Am 01.10.2009 um 19:08 schrieb Rich Hickey: It simply doesn't compose or flow. Making the nil env special (e.g. non-replacing) just moves the problem into higher-order functions that use the construct: (defn needs-x

Re: RFC: laziness-safe, semi-dynamic environment Var(Lite)

2009-10-01 Thread jon
On Sep 29, 10:31 pm, Rich Hickey richhic...@gmail.com wrote: On Tue, Sep 29, 2009 at 4:04 PM, jon superuser...@googlemail.com wrote: Before leaping to implementation/performance issues, I think it is important to think about the semantics of this - what does it mean? I think you will get a

Re: RFC: laziness-safe, semi-dynamic environment Var(Lite)

2009-10-01 Thread Rich Hickey
On Thu, Oct 1, 2009 at 12:03 PM, jon superuser...@googlemail.com wrote: On Sep 29, 10:31 pm, Rich Hickey richhic...@gmail.com wrote: On Tue, Sep 29, 2009 at 4:04 PM, jon superuser...@googlemail.com wrote: Before leaping to implementation/performance issues, I think it is important to think

Re: RFC: laziness-safe, semi-dynamic environment Var(Lite)

2009-09-30 Thread Laurent PETIT
Hello Rich, It's been a long time since I've not hijacked a thread, so let's get back to this bad habit exceptionally :) While the example provided by jon may not be the best ones, as you pointed out below, I feel there still is a problem: dynamic scopes and threads. I don't know how it can be

Re: RFC: laziness-safe, semi-dynamic environment Var(Lite)

2009-09-30 Thread Meikel Brandmeyer
Hi Laurent, On Sep 30, 9:46 am, Laurent PETIT laurent.pe...@gmail.com wrote: Where should the responsability be placed ? Should the user of the library, in doubt, place everywhere in his code bind-fn calls to protect it ? Should the library author use bind-fn before dispatching to other

Re: RFC: laziness-safe, semi-dynamic environment Var(Lite)

2009-09-30 Thread Laurent PETIT
Hi Meikel !, 2009/9/30 Meikel Brandmeyer m...@kotka.de Hi Laurent, On Sep 30, 9:46 am, Laurent PETIT laurent.pe...@gmail.com wrote: Where should the responsability be placed ? Should the user of the library, in doubt, place everywhere in his code bind-fn calls to protect it ? Should

RFC: laziness-safe, semi-dynamic environment Var(Lite)

2009-09-29 Thread jon
Hi.. long post.. it's a Request For Comment :) Clojure's thread local binding facility for Vars has always seemed like a useful (but of course misusable) feature to have available in our toolbox.. However it soon becomes apparent that Var bindings don't play nice with laziness - and since

Re: RFC: laziness-safe, semi-dynamic environment Var(Lite)

2009-09-29 Thread Rich Hickey
On Tue, Sep 29, 2009 at 4:04 PM, jon superuser...@googlemail.com wrote: Hi.. long post.. it's a Request For Comment :) Clojure's thread local binding facility for Vars has always seemed like a useful (but of course misusable) feature to have available in our toolbox.. However it soon