http://hyperpolyglot.org/lispによると、Clojure の唯一の虚偽はfalse
とnil
です。実際、驚くべきことに、(Boolean. false)
これは誤りではありません。
user=> (if (Boolean. false) 1 2)
1
user=> (not (Boolean. false))
false
user=> (false? (Boolean. false))
false
一方、それはどういうわけか間違っています:
user=> (class false)
java.lang.Boolean
user=> (= false (Boolean. false))
true
これはかなり直感に反します。この動作には理由がありますか、それとも単に見落とされていましたか?