ornot a function - this is a macro. it expands to challenges, ifand thus the rules apply if: nilor they falseare flexible, everything else is true - including 0.
user=> (when 0 (println "true"))
true
nil
Your code expands to:
user=> (macroexpand '(or 1 0))
(let* [or__4238__auto__ 1] (if or__4238__auto__ or__4238__auto__ (clojure.core/or 0)))
So, the orgenerated code returns the first true argument - or the last.
, , , - :
user=> (some zero? [1 2 3])
nil
user=> (some zero? [1 2 0])
true
, 0 :
user=> (some
nil
user=> (some
0