or

added
1.0

ns
clojure.core

type
macro

(or) (or x) (or x & next)

Evaluates exprs one at a time, from left to right. If a form
returns a logical true value, or returns that value and doesn't
evaluate any of the other expressions, otherwise it returns the
value of the last expression. (or) returns nil.

                user> (or true false false)
true

user> (or true true true)
true

user> (or false false false)
false

user> (or nil nil)
nil

user> (or false nil)
nil

user> (or true nil)
true

;; or doesn't evaluate if the first value is true
user> (or true (println "foo"))
true

;; order matters
user> (or (println "foo") true)
foo
true

;; does not coerce a given value to a boolean true, returns the value
user> (or false 42)
42

user> (or false 42 9999)
42

user> (or 42 9999)
42
            
                ;; See examples for "if" explaining Clojure's idea of logical true
;; and logical false.
            
                ;;evaluates last expression for this case
user> (or nil false)
false

user> (or false nil)
nil