Re: Clojure CLR and System.Double Behavior

2012-12-01 Thread Frank Failla
Thank you! On Nov 30, 2012, at 11:35 PM, dmiller wrote: > Patched in master branch. > > Clojure 1.5.0-master-SNAPSHOT > user=> > user=> (defn bar [^Double d] d) > #'user/bar > user=> (defn baz [^System.Double d] d) > #'user/baz > user=> (bar 1.2) > 1.2 > user=> (baz 1.2) > 1.2 > user=> (defprot

Re: Clojure CLR and System.Double Behavior

2012-11-30 Thread dmiller
Patched in master branch. Clojure 1.5.0-master-SNAPSHOT user=> user=> (defn bar [^Double d] d) #'user/bar user=> (defn baz [^System.Double d] d) #'user/baz user=> (bar 1.2) 1.2 user=> (baz 1.2) 1.2 user=> (defprotocol FP (foo [_])) FP user=> (extend-protocol FP System.Double (foo [d] d)) nil user=

Re: Clojure CLR and System.Double Behavior

2012-11-29 Thread dmiller
user=> (defn f [^Double x] x) #'user/f user=> (defn g [^double x] x) #'user/g user=> (f 1.0) 2.15078317008181E-316# GASP! user=> (g 1.0) 1.0# CROWD APPLAUDS! As you can see, there is a workaround: use ^double, not ^Double. This

Clojure CLR and System.Double Behavior

2012-11-29 Thread ffailla
I have discovered some odd behavior when type-hinting fns with ^System.Double: user=> (defn bar [^System.Double d] d) #'user/bar user=> (bar 1.2) 2.35293190771409E-316 user=> (bar 1) 2.35069794048985E-316 The same behavior occurs when extending double via extend-protocol or extend-type: user=>