目录

LISP - 谓词(Predicates)

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

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

Sr.No. 谓词和描述
1

atom

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

2

equal

它需要两个参数,如果它们在结构上相等则返回t否则返回nil

3

eq

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

4

eql

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

5

evenp

它需要一个数字参数,如果参数是偶数,则返回t否则返回nil

6

oddp

它需要一个数字参数,如果参数是奇数,则返回t否则返回nil

7

zerop

它需要一个数字参数,如果参数为零则返回t否则返回nil

8

null

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

9

listp

它接受一个参数并返回t如果参数求值为列表,否则返回nil

10

greaterp

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

11

lessp

它需要一个或多个参数,如果有一个参数或者参数从左到右连续变小,则返回t否则返回nil

12

numberp

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

13

symbolp

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

14

integerp

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

15

rationalp

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

16

floatp

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

17

realp

如果参数是实数,它需要一个参数并返回t ,否则返回nil

18

complexp

如果参数是复数,它需要一个参数并返回t ,否则返回nil.

19

characterp

如果参数是一个字符,它需要一个参数并返回t ,否则返回nil

20

stringp

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

21

arrayp

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

22

packagep

如果参数是一个包,它需要一个参数并返回t ,否则返回nil.

例子1 (Example 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 (Example 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
↑回到顶部↑
WIKI教程 @2018