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

Official Documentation

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

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

Source

(defmacro and
  "Evaluates exprs one at a time, from left to right. If a form
  returns logical false (nil or false), and returns that value and
  doesn't evaluate any of the other expressions, otherwise it returns
  the value of the last expr. (and) returns true."
  {:added "1.0"}
  ([] true)
  ([x] x)
  ([x & next]
   `(let [and# ~x]
      (if and# (and ~@next) and#))))

Example 1

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

Example 2

Edit
(and true true)
;; => true

(and true false)
;; => false

(and false false)
;; => false

(and '() '())
;; => ()

(and '[] '[])
;; => []

(and 0 1)  ; Note that this is *not* bitwise 'and'
;; => 1

(and 1 0)
;; => 0

(and (constantly true) (> 2 1))
;; => true

Uses on crossclj