wow!!! i wasn't expecting that one...
Jim
On 13/04/12 21:17, Armando Blancas wrote:
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
<[email protected] <mailto:[email protected]>> wrote:
On Fri, Apr 13, 2012 at 3:33 AM, Vinzent <[email protected]
<mailto:[email protected]>> 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 [email protected]
<mailto:[email protected]>
Note that posts from new members are moderated - please be
patient with your first post.
To unsubscribe from this group, send email to
[email protected]
<mailto:clojure%[email protected]>
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
<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 [email protected]
Note that posts from new members are moderated - please be patient
with your first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en