Істинність
Семантика цього аспекту дуже різна у кожній мові (часто неправильна). Більшість мов уважають порожні колекції, ціле число 0 та інші схожі значення логічним false
. В ClojureScript лише два значення можуть бути false
: nil
та false
. Все інше — розглядається як логічне true
.
Маючи можливість імплементувати протокол виклику (IFn
, про який ми поговоримо пізніше), такі структури даних, як множини, можуть бути використані в якості предикати, тобто без використання допоміжної функції-обгортки:
(def valid? #{1 2 3})
(filter valid? (range 1 10))
;; => (1 2 3)
Так відбувається тому, що множина повертає значення, яке вона містить, або nil
— якщо його нема:
(valid? 1)
;; => 1
(valid? 4)
;; => nil