📜  LISP 中的谓词

📅  最后修改于: 2022-05-13 01:55:14.030000             🧑  作者: Mango

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