Re: Fail to run dynamic binding code with Clojure1.4

2012-10-30 Thread Satoru Logic
Thanks On Wednesday, October 31, 2012 12:41:24 PM UTC+8, Sean Corfield wrote: > > On Tue, Oct 30, 2012 at 8:38 PM, Satoru Logic > > > wrote: > > Could you please recommend a book that's more up-to-date? > > Clojure Programming http://www.clojurebook.com/ would be my first choice. > > Programm

Re: Fail to run dynamic binding code with Clojure1.4

2012-10-30 Thread Sean Corfield
On Tue, Oct 30, 2012 at 8:38 PM, Satoru Logic wrote: > Could you please recommend a book that's more up-to-date? Clojure Programming http://www.clojurebook.com/ would be my first choice. Programming Clojure 2nd Edition http://pragprog.com/book/shcloj2/programming-clojure would be my second choic

Re: Fail to run dynamic binding code with Clojure1.4

2012-10-30 Thread Satoru Logic
Does this mean vars are dynamic by default prior to Clojure1.3, and lexical afterwards? On Wednesday, October 31, 2012 9:36:47 AM UTC+8, Andy Fingerhut wrote: > > The code works as written in Clojure 1.2 and 1.2.1. > > It doesn't in 1.3 and later, unless you change the definition of twice to > a

Re: Fail to run dynamic binding code with Clojure1.4

2012-10-30 Thread Satoru Logic
Could you please recommend a book that's more up-to-date? On Wednesday, October 31, 2012 11:26:48 AM UTC+8, Sean Corfield wrote: > > Yes, it's very unfortunate that Manning released Clojure in Action > without a final pass to make it Clojure 1.3 compatible. I talked to > them about it when they

Re: Fail to run dynamic binding code with Clojure1.4

2012-10-30 Thread Sean Corfield
Yes, it's very unfortunate that Manning released Clojure in Action without a final pass to make it Clojure 1.3 compatible. I talked to them about it when they still had time to make changes but they decided to go ahead and publish a book that is tightly wedded to Clojure 1.2 after Clojure 1.3 had b

Re: Fail to run dynamic binding code with Clojure1.4

2012-10-30 Thread Andy Fingerhut
The code works as written in Clojure 1.2 and 1.2.1. It doesn't in 1.3 and later, unless you change the definition of twice to annotate that it is a dynamic var, like so: (defn ^:dynamic twice [x] (println "original function") (* 2 x)) With that change, it works in Clojure 1.3 and later. An

Re: Fail to run dynamic binding code with Clojure1.4

2012-10-30 Thread gaz jones
As of Clojure 1.3 you need to mark things you with to re-bind explicitly as dynamic: (defn ^:dynamic twice [x] ...) On Tue, Oct 30, 2012 at 7:42 PM, Satoru Logic wrote: > Hi, all. > > I am reading Clojure in Action. > > In the "scope" section of Chapter3, there are examples like this: > > def

Fail to run dynamic binding code with Clojure1.4

2012-10-30 Thread Satoru Logic
Hi, all. I am reading Clojure in Action. In the "scope" section of Chapter3, there are examples like this: defn twice [x] (println "original function") (* 2 x)) (defn call-twice [y] (twice y)) (defn with-log [function-to-call log-statement] (fn [& args]