LISP - 谓词函数(Predicate)

LISP - 谓词函数(Predicate) 首页 / LISP入门教程 / LISP - 谓词函数(Predicate)

断言是针对某些特定条件测试其参数的函数,如果条件为false,或者某些非nil值为条件为true,则返回nil。

下表显示了一些最常用的断言-

Sr.No.Predicate & 描述
1

atom

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

2

equal

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

3

eq

它使用两个参数,如果它们是相同的对象,则返回 t ,否则返回 nil 。

4

eql

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

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

链接:https://www.learnfk.comhttps://www.learnfk.com/lisp/lisp-predicates.html

来源:LearnFk无涯教程网

它使用一个参数,如果参数是字符,则返回 t ,否则返回 nil 。

20

stringp

它使用一个参数,如果该参数是字符串对象,则返回 t ,否则返回 nil 。

21

arrayp

它使用一个参数,如果参数是数组对象,则返回 t ,否则返回 nil 。

无涯教程网

22

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))

当您执行代码时,它返回以下输出-

Factorial 6 is: 720

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

左耳听风 -〔陈皓〕

深入剖析Kubernetes -〔张磊〕

程序员的数学基础课 -〔黄申〕

Service Mesh实战 -〔马若飞〕

分布式系统案例课 -〔杨波〕

代码之丑 -〔郑晔〕

攻克视频技术 -〔李江〕

李智慧 · 高并发架构实战课 -〔李智慧〕

手把手带你写一个 MiniTomcat -〔郭屹〕

好记忆不如烂笔头。留下您的足迹吧 :)