store/[org.clojure/clojure "1.8.0"] clj::clojure.core/or

Official Documentation

Add notes
Arities
==================================================
   []
   [x]
   [x & next]

Docstring
==================================================
  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.

Source

(defmacro or
  "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."
  {:added "1.0"}
  ([] nil)
  ([x] x)
  ([x & next]
      `(let [or# ~x]
         (if or# or# (or ~@next)))))

Example 1

Edit
;; See examples for "if" explaining Clojure's idea of logical true
;; and logical false.

Example 2

Edit
(or true false false)
;; => true

(or true true true)
;; => true

(or false false false)
;; => false

(or nil nil)
;; => nil

(or false nil)
;; => nil

(or true nil)
;; => true

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

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

Uses on crossclj