LISP 中的谓词
在本文中,我们将讨论谓词。谓词类似于将用于测试其参数的条件的函数。如果条件不满足,它们将返回 NIL,如果条件满足,它们将返回 T。
谓词类型:
下面是主要谓词列表以及语法和示例。
1.原子:
如果参数是原子,则此谓词将返回 t,否则将返回 nil。
语法:
(atom 'element)
示例:
Lisp
;check atom or not
(write (atom 'geeks))
(terpri)
Lisp
;check equal or not
(write (equal 'geeks 'forgeeks))
(terpri)
;check equal or not
(write (equal 'python 'python))
(terpri)
Lisp
;check equal or not
(write (eq 'geeks 'forgeeks))
(terpri)
;check equal or not
(write (eq 45 45))
(terpri)
Lisp
;check even or not
(write (evenp 31))
(terpri)
;check even or not
(write (evenp 20))
(terpri)
Lisp
;check odd or not
(write (oddp 31))
(terpri)
;check odd or not
(write (oddp 20))
(terpri)
Lisp
;check zero or not
(write (zerop 0))
(terpri)
;check zero or not
(write (zerop 20))
(terpri)
Lisp
;check null or not
(write (null 0))
(terpri)
;check null or not
(write (null nil))
(terpri)
Lisp
;check list or not
(write (listp 0))
(terpri)
;check list or not
(write (listp '(g e e k s)))
(terpri)
Lisp
;check number or not
(write (numberp 67 ))
(terpri)
;check number or not
(write (numberp '(g e e k s)))
(terpri)
Lisp
;check integer or not
(write (integerp 67 ))
(terpri)
;check integer or not
(write (integerp '(g e e k s)))
(terpri)
Lisp
;check rational or not
(write (rationalp 67 ))
(terpri)
;check rational or not
(write (rationalp '(g e e k s)))
(terpri)
Lisp
;check complex or not
(write (complexp #c( 10 30) ))
(terpri)
;check complex or not
(write (rationalp '(g e e k s)))
(terpri)
Lisp
;check character or not
(write (characterp 'h ))
(terpri)
;check character or not
(write (characterp '(g e e k s)))
(terpri)
Lisp
;check float or not
(write (floatp 56.78 ))
(terpri)
;check float or not
(write (floatp 67))
(terpri)
Lisp
;check real or not
(write (realp 56.78 ))
(terpri)
;check real or not
(write (realp 67))
(terpri)
Lisp
;check string or not
(write (stringp "heelo geeks" ))
(terpri)
;check string or not
(write (stringp 67))
(terpri)
Lisp
;create an array
(write (setf array1 (make-array '(10))))
(terpri)
;check array or not
(write (arrayp array1))
(terpri)
;check array or not
(write (arrayp 90))
(terpri)
输出:
T
2.相等:
该谓词将检查给定的两个参数是否相等,如果相等则返回 T 否则为零。
语法:
(equal 'element1 'element2)
示例:
语言
;check equal or not
(write (equal 'geeks 'forgeeks))
(terpri)
;check equal or not
(write (equal 'python 'python))
(terpri)
输出:
NIL
T
3.当量:
这个谓词将检查两个参数在共享相同内存的情况下是否相同
如果它们相同,它将返回 t,否则返回 nil
语法:
(eq 'element1 'element2)
例子:
语言
;check equal or not
(write (eq 'geeks 'forgeeks))
(terpri)
;check equal or not
(write (eq 45 45))
(terpri)
输出:
NIL
T
4.偶数:
这个谓词将检查给定的数字是否偶数。如果数字甚至为零,它将返回 t
语法:
(evenp element)
例子:
语言
;check even or not
(write (evenp 31))
(terpri)
;check even or not
(write (evenp 20))
(terpri)
输出:
NIL
T
5.奇数:
该谓词将检查给定数字是否为奇数。
如果数字是奇数,它将返回 t,否则返回 nil
语法:
(oddp element)
例子:
语言
;check odd or not
(write (oddp 31))
(terpri)
;check odd or not
(write (oddp 20))
(terpri)
输出:
T
NIL
6. 零点:
此谓词将检查给定数字是否为零
如果数字为零,它将返回 t 否则为零
语法:
(zerop element)
例子:
语言
;check zero or not
(write (zerop 0))
(terpri)
;check zero or not
(write (zerop 20))
(terpri)
输出:
T
NIL
7. 空:
此谓词将检查给定元素是否为 nil,当给定元素为 nil 时返回 T,否则返回 NIL
语法:
(null element)
例子:
语言
;check null or not
(write (null 0))
(terpri)
;check null or not
(write (null nil))
(terpri)
输出:
NIL
T
8. 列表:
如果给定元素在列表中,它将返回 t,否则返回 nil
语法:
(listp element)
例子:
语言
;check list or not
(write (listp 0))
(terpri)
;check list or not
(write (listp '(g e e k s)))
(terpri)
输出:
NIL
T
9. 编号:
如果给定参数是数字,则此谓词将返回,否则返回 nil
语法:
(numberp element)
示例:
语言
;check number or not
(write (numberp 67 ))
(terpri)
;check number or not
(write (numberp '(g e e k s)))
(terpri)
输出:
T
NIL
10.整数p:
如果它是一个整数,这个谓词将返回 t,否则将返回 nil
语法:
(integerp element)
例子:
语言
;check integer or not
(write (integerp 67 ))
(terpri)
;check integer or not
(write (integerp '(g e e k s)))
(terpri)
输出:
T
NIL
11. 理性:
如果参数是有理数,则此谓词将返回 t,否则将返回 nil
语法:
(rationalp element)
例子:
语言
;check rational or not
(write (rationalp 67 ))
(terpri)
;check rational or not
(write (rationalp '(g e e k s)))
(terpri)
输出:
T
NIL
12. 复杂:
如果参数是复数,则此谓词将返回 t,否则将返回 nil
语法:
(complexp element)
例子:
语言
;check complex or not
(write (complexp #c( 10 30) ))
(terpri)
;check complex or not
(write (rationalp '(g e e k s)))
(terpri)
输出:
T
NIL
13. 性格:
如果参数是字符,此谓词将返回 t,否则将返回 nil
语法:
(characterp element)
例子:
语言
;check character or not
(write (characterp 'h ))
(terpri)
;check character or not
(write (characterp '(g e e k s)))
(terpri)
输出:
NIL
NIL
14.浮动:
如果参数是浮点数,此谓词将返回 t,否则将返回 nil
语法:
(floatp element)
例子:
语言
;check float or not
(write (floatp 56.78 ))
(terpri)
;check float or not
(write (floatp 67))
(terpri)
输出:
T
NIL
15. 现实:
这个谓词将检查给定的数字是否真实。如果它是真实的,它将返回 t 否则为零
语法:
(realp element)
例子:
语言
;check real or not
(write (realp 56.78 ))
(terpri)
;check real or not
(write (realp 67))
(terpri)
输出:
T
T
16.字符串:
该谓词将检查给定参数是否为字符串。如果它是字符串,它将返回 t,否则返回 nil
语法:
(stringp element)
示例:
语言
;check string or not
(write (stringp "heelo geeks" ))
(terpri)
;check string or not
(write (stringp 67))
(terpri)
输出:
T
NIL
17.数组:
如果参数是数组,则此谓词将返回 t,否则返回 nil。
语法:
(arrayp element)
示例:
语言
;create an array
(write (setf array1 (make-array '(10))))
(terpri)
;check array or not
(write (arrayp array1))
(terpri)
;check array or not
(write (arrayp 90))
(terpri)
输出:
#(NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL)
T
NIL