(every? pred coll)
Returns true if (pred x) is logical true for every x in coll, else false.
user=> (every? even? '(2 4 6))
true
user=> (every? even? '(1 2 3))
false
;; you can use every? with a set as the predicate to return true if
;; every member of a collection is in the set
user=> (every? #{1 2} [1 2 3])
false
user=> (every? #{1 2} [1 2])
true
;; or use a hash-map as the predicate with every? to return true
;; if every member of a collection is a key within the map
user=> (every? {1 "one" 2 "two"} [1 2])
true
user=> (every? {1 "one" 2 "two"} [1 2 3])
false
;; this is kind of weird IMO... but it works that way (the same for vectors)
;; See: https://en.wikipedia.org/wiki/Vacuous_truth
user=> (every? true? '())
true
user=> (every? false? '())
true
;; As such a better description of every? would be
;; Returns false if there exists a value x in coll
;; such that (pred? x) is false, else true."
;; every? can replace clojure.set/subset? if and only if
;; the sets do not contain false / nil values
(subset? #{1} #{1 2}) ;;=> true
(every? #{1 2} #{1} ) ;;=> true ✔
(subset? #{1 3} #{1 2}) ;;=> false
(every? #{1 2} #{1 3}) ;;=> false ✔
;; however, invoking a set with a value returns the matched element,
;; causing the comparison below to fail
(subset? #{true false} #{true false}) ;;=> true
(every? #{true false} #{true false}) ;;=> false ✘ 😦