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