Предикаты — это функции, которые проверяют свои аргументы на наличие определенных условий и возвращают nil, если условие ложно, или если какое-либо значение, не равное nil, условие истинно.
В следующей таблице приведены некоторые из наиболее часто используемых предикатов —
Sr.No. | Предикат и описание |
---|---|
1 |
атом Он принимает один аргумент и возвращает t, если аргумент является атомом или ноль, если в противном случае. |
2 |
равный Он принимает два аргумента и возвращает t, если они структурно равны или ноль в противном случае. |
3 |
уравнение Он принимает два аргумента и возвращает t, если они являются одинаковыми идентичными объектами, разделяющими одну и ту же ячейку памяти, или ноль в противном случае |
4 |
EQL Он принимает два аргумента и возвращает t, если аргументами являются eq , или они являются числами одного типа с одинаковым значением, или если они являются символьными объектами, представляющими один и тот же символ, или ноль в противном случае. |
5 |
EVENP Он принимает один числовой аргумент и возвращает t, если аргумент является четным числом или ноль, если в противном случае. |
6 |
oddp Он принимает один числовой аргумент и возвращает t, если аргумент нечетное число или ноль, если в противном случае. |
7 |
zerop Он принимает один числовой аргумент и возвращает t, если аргумент равен нулю, или ноль, если в противном случае. |
8 |
ноль Он принимает один аргумент и возвращает t, если аргумент оценивается как ноль, в противном случае он возвращает ноль . |
9 |
listp Он принимает один аргумент и возвращает t, если аргумент оценивается как список, в противном случае он возвращает nil . |
10 |
greaterp Он принимает один или несколько аргументов и возвращает t, если либо есть один аргумент, либо аргументы последовательно больше слева направо, либо nil, если в противном случае. |
11 |
lessp Он принимает один или несколько аргументов и возвращает t, если либо есть один аргумент, либо аргументы последовательно меньше слева направо, либо nil, если в противном случае. |
12 |
numberp Он принимает один аргумент и возвращает t, если аргумент является числом или ноль, если в противном случае. |
13 |
symbolp Он принимает один аргумент и возвращает t, если аргумент является символом, в противном случае он возвращает ноль . |
14 |
integerp Он принимает один аргумент и возвращает t, если аргумент является целым числом, в противном случае он возвращает nil . |
15 |
rationalp Он принимает один аргумент и возвращает t, если аргумент является рациональным числом, либо отношением, либо числом, в противном случае он возвращает ноль . |
16 |
floatp Он принимает один аргумент и возвращает t, если аргумент является числом с плавающей запятой, в противном случае он возвращает nil . |
17 |
Реальп Он принимает один аргумент и возвращает t, если аргумент является действительным числом, в противном случае он возвращает ноль . |
18 |
complexp Он принимает один аргумент и возвращает t, если аргумент является комплексным числом, в противном случае он возвращает nil. |
19 |
characterp Он принимает один аргумент и возвращает t, если аргумент является символом, в противном случае он возвращает ноль . |
20 |
stringp Он принимает один аргумент и возвращает t, если аргумент является строковым объектом, в противном случае он возвращает nil . |
21 |
arrayp Он принимает один аргумент и возвращает t, если аргумент является объектом массива, в противном случае он возвращает nil . |
22 |
packagep Он принимает один аргумент и возвращает t, если аргумент является пакетом, в противном случае он возвращает nil. |
атом
Он принимает один аргумент и возвращает t, если аргумент является атомом или ноль, если в противном случае.
равный
Он принимает два аргумента и возвращает t, если они структурно равны или ноль в противном случае.
уравнение
Он принимает два аргумента и возвращает t, если они являются одинаковыми идентичными объектами, разделяющими одну и ту же ячейку памяти, или ноль в противном случае
EQL
Он принимает два аргумента и возвращает t, если аргументами являются eq , или они являются числами одного типа с одинаковым значением, или если они являются символьными объектами, представляющими один и тот же символ, или ноль в противном случае.
EVENP
Он принимает один числовой аргумент и возвращает t, если аргумент является четным числом или ноль, если в противном случае.
oddp
Он принимает один числовой аргумент и возвращает t, если аргумент нечетное число или ноль, если в противном случае.
zerop
Он принимает один числовой аргумент и возвращает t, если аргумент равен нулю, или ноль, если в противном случае.
ноль
Он принимает один аргумент и возвращает t, если аргумент оценивается как ноль, в противном случае он возвращает ноль .
listp
Он принимает один аргумент и возвращает t, если аргумент оценивается как список, в противном случае он возвращает nil .
greaterp
Он принимает один или несколько аргументов и возвращает t, если либо есть один аргумент, либо аргументы последовательно больше слева направо, либо nil, если в противном случае.
lessp
Он принимает один или несколько аргументов и возвращает t, если либо есть один аргумент, либо аргументы последовательно меньше слева направо, либо nil, если в противном случае.
numberp
Он принимает один аргумент и возвращает t, если аргумент является числом или ноль, если в противном случае.
symbolp
Он принимает один аргумент и возвращает t, если аргумент является символом, в противном случае он возвращает ноль .
integerp
Он принимает один аргумент и возвращает t, если аргумент является целым числом, в противном случае он возвращает nil .
rationalp
Он принимает один аргумент и возвращает t, если аргумент является рациональным числом, либо отношением, либо числом, в противном случае он возвращает ноль .
floatp
Он принимает один аргумент и возвращает t, если аргумент является числом с плавающей запятой, в противном случае он возвращает nil .
Реальп
Он принимает один аргумент и возвращает t, если аргумент является действительным числом, в противном случае он возвращает ноль .
complexp
Он принимает один аргумент и возвращает t, если аргумент является комплексным числом, в противном случае он возвращает nil.
characterp
Он принимает один аргумент и возвращает t, если аргумент является символом, в противном случае он возвращает ноль .
stringp
Он принимает один аргумент и возвращает t, если аргумент является строковым объектом, в противном случае он возвращает nil .
arrayp
Он принимает один аргумент и возвращает t, если аргумент является объектом массива, в противном случае он возвращает nil .
packagep
Он принимает один аргумент и возвращает t, если аргумент является пакетом, в противном случае он возвращает nil.
Пример 1
Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.
(write (atom 'abcd)) (terpri) (write (equal 'a 'b)) (terpri) (write (evenp 10)) (terpri) (write (evenp 7 )) (terpri) (write (oddp 7 )) (terpri) (write (zerop 0.0000000001)) (terpri) (write (eq 3 3.0 )) (terpri) (write (equal 3 3.0 )) (terpri) (write (null nil ))
Когда вы выполняете код, он возвращает следующий результат —
T NIL T NIL T NIL NIL NIL T
Пример 2
Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.
(defun factorial (num) (cond ((zerop num) 1) (t ( * num (factorial (- num 1)))) ) ) (setq n 6) (format t "~% Factorial ~d is: ~d" n (factorial n))
Когда вы выполняете код, он возвращает следующий результат —