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

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

无涯教程网

20

stringp

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

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

来源:LearnFk无涯教程网

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

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

技术教程推荐

AI技术内参 -〔洪亮劼〕

React实战进阶45讲 -〔王沛〕

程序员进阶攻略 -〔胡峰〕

高并发系统设计40问 -〔唐扬〕

性能测试实战30讲 -〔高楼〕

Vim 实用技巧必知必会 -〔吴咏炜〕

代码之丑 -〔郑晔〕

大厂设计进阶实战课 -〔小乔〕

Go进阶 · 分布式爬虫实战 -〔郑建勋〕

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