LISP - 谓词
-
简述
谓词是针对某些特定条件测试其参数并在条件为假时返回 nil 的函数,或者在条件为真时返回一些非 nil 值。下表显示了一些最常用的谓词 -序号 谓词和描述 1 atom它接受一个参数,如果参数是原子则返回 t,否则返回 nil。2 equal它需要两个参数并返回t如果它们在结构上相等或nil否则。3 eq它需要两个参数并返回t如果它们是相同的相同对象,则共享相同的内存位置或nil否则。4 eql它需要两个参数并返回t如果参数是eq,或者如果它们是具有相同值的相同类型的数字,或者如果它们是表示相同字符的字符对象,或者nil否则。5 evenp它接受一个数字参数并返回t如果参数是偶数或nil如果不是的话。6 oddp它接受一个数字参数并返回t如果参数是奇数或nil如果不是的话。7 zerop它接受一个数字参数并返回t如果参数为零或nil如果不是的话。8 null它接受一个参数并返回t如果参数的计算结果为 nil,否则返回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