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 。 |
| 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
祝学习愉快! (发现内容有误?请选中要编辑的内容 -> 右键 -> 修改 -> 提交!帮助我们改进教程质量)
精选教程推荐
👇 以下精选教程可能对您有帮助,拓展您的技术视野
暂无学习笔记,成为第一个分享的人吧!
您的笔记将帮助成千上万的学习者