Предикаты — это функции, которые оценивают условие и предоставляют значение true или false. Мы видели предикатные функции в примерах главы о числах. Мы видели такие функции, как «даже?» который используется для проверки, является ли число четным или нет, или ‘neg?’ который используется для проверки, если число больше нуля или нет. Все эти функции возвращают либо истинное, либо ложное значение.
Ниже приведен пример предикатов в Clojure.
(ns clojure.examples.example (:gen-class)) ;; This program displays Hello World (defn Example [] (def x (even? 0)) (println x) (def x (neg? 2)) (println x) (def x (odd? 3)) (println x) (def x (pos? 3)) (println x)) (Example)
Вышеуказанная программа производит следующий вывод.
true false true true
В дополнение к обычным функциям предикатов Clojure предоставляет больше функций для предикатов. Для предикатов доступны следующие методы.
Принимает набор предикатов и возвращает функцию ‘f’, которая возвращает значение true, если все его составные предикаты возвращают логическое значение true для всех своих аргументов, в противном случае возвращает значение false.
Возвращает true, если предикат имеет значение true для каждого значения, иначе false.
Возвращает первое логическое истинное значение для любого значения предиката x в коллекции значений.
Возвращает false, если любой из предикатов значений в коллекции логически истинен, в противном случае — истина.