## 謂詞
Clojure 提供了很多函數來充當謂詞的功能 — 測試條件是否成立。它們的返回值是 true或者false。在Clojure里面 `false` 以及 `nil` 被解釋成false. `true` 以及任何其他值都被解釋成true, 包括0。謂詞函數的名字一般以問號結尾。
反射是一種獲取一個對象的特性,而不是它的值的過程。比如說對象的類型。有很多謂詞函數進行反射。 測試一個對象的類型的謂詞包括 `class?` , `coll?` , `decimal?` , `delay?` , `float?` , `fn?` , `instance?` , `integer?` , `isa?` , `keyword?` , `list?` , `macro?` , `map?` , `number?` , `seq?` , `set?` , `string?` 以及 `vector?` 。 一些非謂詞函數也進行反射操作,包括: `ancestors` , `bases` , `class` , `ns-publics` 以及 `parents` 。
測試兩個值之間關系的謂詞有: `<` , `<=` , `=` , `not=` , `==` , `>` , `>=` , `compare` , `distinct?` 以及 `identical?` .
測試邏輯關系的謂詞有: `and` , `or` , `not` , `true?` , `false?` 和 `nil?`
測試集合的一些謂詞在前面已經討論過了,包括: `empty?` , `not-empty` , `every?` , `not-every?` , `some?` 以及 `not-any?` .
測試數字的謂詞有 `even?` , `neg?` , `odd?` , `pos?` 以及 `zero?` .