It's the other way around: false is boxed into Boolean/FALSE. Here's the if stmt:
public Object eval() { Object t = testExpr.eval(); if(t != null && t != Boolean.FALSE) return thenExpr.eval(); return elseExpr.eval(); } On Friday, April 13, 2012 12:45:02 PM UTC-7, Andy Fingerhut wrote: > > One little nit that confuses me. > > Boolean/FALSE is documented as being of type Boolean in Java > documentation, yet it is treated by Clojure the same as primitive boolean > false: > > user=> (clojure-version) > "1.3.0" > user=> (if Boolean/FALSE "logical true" "logical false") > "logical false" > user=> (identical? Boolean/FALSE false) > true > > Does anyone know why? > > Thanks, > Andy > > > On Fri, Apr 13, 2012 at 11:41 AM, Sean Corfield <seancorfi...@gmail.com>wrote: > >> On Fri, Apr 13, 2012 at 3:33 AM, Vinzent <ru.vinz...@gmail.com> wrote: >> > Just like Boolean's javadoc puts a strong >> > emphasis on the fact that public Boolean(boolean value) constructor >> usually >> > shouldn't be used, clojure's docstring should say that (= x false) may >> give >> > you a result which will confuse you, so you'd better use 'false?' >> instead. >> >> (def f (Boolean. false)) >> (false? f) >> ;; => false >> (true? f) >> ;; => false >> (= f false) >> ;; => true >> (if f :t :f) >> ;; => :t >> >> So 'false?' doesn't help you here. >> >> No one should be using (Boolean. false) in Clojure code - we have true >> / false. Why create a Java object whose documentation says not to do >> it? >> >> So if anyone runs into this problem _in real world code_ it's because >> they are calling a Java API that somehow returns a Java Boolean object >> embedded in the result. If you are working with a Java data structure >> full of _Objects_ then you need to take care of converting those >> Object instances into appropriate Clojure values. Calling (boolean v) >> is sufficient to convert the Java Object to a Clojure true/false >> value. >> -- >> Sean A Corfield -- (904) 302-SEAN >> An Architect's View -- http://corfield.org/ >> World Singles, LLC. -- http://worldsingles.com/ >> >> "Perfection is the enemy of the good." >> -- Gustave Flaubert, French realist novelist (1821-1880) >> >> -- >> 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 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