Учебники

LISP – Предикаты

Предикаты – это функции, которые проверяют свои аргументы на наличие определенных условий и возвращают 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 и введите в него следующий код.

Live Demo

(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 и введите в него следующий код.

Live Demo

(defun factorial (num)
   (cond ((zerop num) 1)
      (t ( * num (factorial (- num 1))))
   )
)
(setq n 6)
(format t "~% Factorial ~d is: ~d" n (factorial n))

Когда вы выполняете код, он возвращает следующий результат –