LISP - 谓词


谓词是测试其参数是否满足某些特定条件的函数,如果条件为假,则返回 nil,或者如果条件为真,则返回一些非 nil 值。

下表显示了一些最常用的谓词 -

先生。 谓词和描述
1

Atomics

它接受一个参数,如果参数是Atomics则返回 t,否则返回 nil。

2

平等的

它接受两个参数,如果它们结构相等则返回t ,否则返回nil

3

情商

它接受两个参数,如果它们是相同的相同对象,共享相同的内存位置,则返回t ,否则返回 nil

4

情商

它接受两个参数,如果参数是eq,或者它们是具有相同值的相同类型的数字,或者它们是表示相同字符的字符对象,则返回 t ,否则返回nil

5

埃文普

它接受一个数字参数,如果参数为偶数则返回t,否则返回nil 。

6

奇数

它接受一个数字参数,如果参数为奇数则返回t,否则返回nil 。

7

泽罗普

它接受一个数字参数,如果参数为零则返回t,否则返回nil 。

8

无效的

它接受一个参数,如果该参数的计算结果为 nil,则返回t,否则返回nil

9

列表

它接受一个参数,如果该参数计算结果为列表,则返回t ,否则返回nil

10

更大的

它接受一个或多个参数,如果只有一个参数或者参数从左到右依次变大,则返回t ,否则返回 nil 。

11

它接受一个或多个参数,如果只有一个参数或者参数从左到右依次变小,则返回t ,否则返回 nil 。

12

号码p

它接受一个参数,如果参数是数字则返回t ,否则返回nil 。

13

符号p

它接受一个参数,如果参数是符号则返回t ,否则返回nil

14

整数p

它接受一个参数,如果参数是整数,则返回t ,否则返回nil

15

理性

它接受一个参数,如果参数是有理数(比率或数字),则返回t ,否则返回nil

16

浮点

它接受一个参数,如果参数是浮点数,则返回t ,否则返回nil

17 号

雷尔普

它接受一个参数,如果参数是实数则返回t ,否则返回nil

18

复合体

它接受一个参数,如果参数是复数则返回t ,否则返回nil。

19

字符p

它接受一个参数,如果参数是字符则返回t ,否则返回nil

20

字符串p

它接受一个参数,如果参数是字符串对象,则返回t ,否则返回nil

21

阵列p

它接受一个参数,如果参数是一个数组对象,则返回t ,否则返回nil

22

包装

它接受一个参数,如果参数是一个包,则返回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))

当您执行代码时,它会返回以下结果 -

Factorial 6 is: 720