(Boolean. False) w Clojure

Wedłughttp://hyperpolyglot.org/lisp, jedyne kłamstwa w Clojure sąfalse inil. Rzeczywiście, o dziwo,(Boolean. false) nie jest fałszywe:

user=> (if (Boolean. false) 1 2)
1
user=> (not (Boolean. false))
false
user=> (false? (Boolean. false))
false

Z drugiej strony to jakośjest fałszywy:

user=> (class false)
java.lang.Boolean
user=> (= false (Boolean. false))
true

Jest to raczej sprzeczne z intuicją. Czy są powody takiego zachowania, czy też po prostu je przeoczono? Czy podobne rzeczy mają miejsce w innych typach danych Java w Clojure? Czy działa to samo w ClojureScript i ClojureCLR, czy jest specyficzne dla wersji JVM? Czy inne JVM Lisps, takie jak Kawa lub ABCL, wykazują podobne zachowanie (jeśli w ogóle używają Java Booleans)?

questionAnswers(3)

yourAnswerToTheQuestion