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") ; false

parse-boolean は、文字列を真偽値に変換する。変換できない文字列を渡すと nil を返す。

(parse-boolean "true")  ; true
(parse-boolean "false") ; false
(parse-boolean "")      ; nil

true? と 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) ; true

nil

nil? は、引数が nil かを判定する。false や 0、空リストは nil ではない。

(nil? nil)   ; true
(nil? false) ; false
(nil? 0)     ; false
(nil? '())   ; false

キーワード