On Mon, Jun 29, 2009 at 10:51 AM, Stephen C. Gilardi<squee...@mac.com> wrote: > > On Jun 29, 2009, at 10:11 AM, Nicolas Oury wrote: > >> I am not sure, but I believe it's due to *warn-on-reflection* being >> bound by the compiler/REPL before evaluating (set! *warn-on-reflection* >> true). >> >> When I looked, the REPL was called within a macro 'with-bindings repl' >> that expands to >> (binding [.... >> *warn-on-reflection* .... >> ] >> repl) >> >> >> allowing the execution of REPL to set! *war-on-reflection* and some >> other similar vars. (*ns*, *compile-files*, *compile-path*, etc...) >> >> I suppose the compiler does a similar thing, but I have never looked. > > That's correct. You can see the vars that are set!-ale in the REPL in: > > user=> (doc clojure.main/with-bindings) > ------------------------- > clojure.main/with-bindings > ([& body]) > Macro > Executes body in the context of thread-local bindings for several vars > that often need to be set!: *ns* *warn-on-reflection* *print-meta* > *print-length* *print-level* *compile-path* *command-line-args* *1 > *2 *3 *e > nil > > In your own REPL, you could make *math-context* set!-able by launching a new > repl wrapped in code that binds *math-context*: > > user=> (binding [*math-context* *math-context*] (clojure.main/repl)) > user=> (set! *math-context* (java.math.MathContext. 4)) > #<MathContext precision=4 roundingMode=HALF_UP> > user=> (+ 3 1.55555555M) > 4.556M > user=> (set! *math-context* (java.math.MathContext. 6)) > #<MathContext precision=6 roundingMode=HALF_UP> > user=> (+ 3 1.55555555M) > 4.55556M > user=> > > It seems to me that clojure.main/with-bindings should be enhanced provide a > root binding for *math-context* so it's set!-able at the repl. > > Does anyone have any objection to or support for that idea? >
Fine by me. Rich --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---