Truthiness
Truthiness
In Clojure everything that is not nil
or false
is considered logical true.
Examples:
(boolean nil) ;=> false
(boolean false) ;=> false
(boolean true) ;=> true
(boolean :a) ;=> true
(boolean "false") ;=> true
(boolean 0) ;=> true
(boolean "") ;=> true
(boolean []) ;=> true
(boolean '()) ;=> true
(filter identity [:a false :b true]) ;=> (:a :b true)
(remove identity [:a false :b true]) ;=> (false)
Booleans
Any value in Clojure is considered truthy unless it is false
or nil
. You can find the truthiness of a value with (boolean value)
. You can find the truthiness of a list of values using (or)
, which returns true
if any arguments are truthy, or (and)
which returns true
if all arguments are truthy.
=> (or false nil)
nil ; none are truthy
=> (and '() [] {} #{} "" :x 0 1 true)
true ; all are truthy
=> (boolean "false")
true ; because naturally, all strings are truthy