TL;DR
- Clojure では
nilとfalse以外の値はすべて真として扱われる。 - clojure.core には、真偽値への変換、真偽値や
nilかどうかの判定を行う関数がそろっている。
内容
Boolean
boolean は、引数を真偽値(java.lang.Boolean)に変換する。nil と false 以外は、空のコレクションや空文字列も含めてすべて true になる。boolean? は、引数が真偽値かを判定する。
(map boolean [true false nil [] {} '() #{} "" "true" "false"])
;; (true false false true true true true true true true)
(boolean? true) ; true
(boolean? "true") ; falseparse-boolean は、文字列を真偽値に変換する。変換できない文字列を渡すと nil を返す。
(parse-boolean "true") ; true
(parse-boolean "false") ; false
(parse-boolean "") ; niltrue? と false? は、引数がそれぞれ true、false そのものかを判定する。真として扱われる値かどうかではない点に注意する。
(map true? [true false ""]) ; (true false false)
(map false? [true false ""]) ; (false true false)some? は引数が nil でなければ true を返す。false を渡しても true になる。any? は、何を渡しても常に true を返す。
(some? nil) ; false
(some? false) ; true
(any? nil) ; true
(any? false) ; truenil
nil? は、引数が nil かを判定する。false や 0、空リストは nil ではない。
(nil? nil) ; true
(nil? false) ; false
(nil? 0) ; false
(nil? '()) ; false