9.3 比较 (Comparison)

谓词 = 比较其参数,当数值上相等时 ── 即两者的差为零时,返回真。

  1. > (= 1 1.0)
  2. T
  3. > (eql 1 1.0)
  4. NIL

= 比起 eql 来得宽松,但参数的类型需一致。

用来比较数字的谓词为 < (小于)、 <= (小于等于)、 = (等于)、 >= (大于等于)、 > (大于) 以及 /= (不相等)。以上所有皆接受一个或多个参数。只有一个参数时,它们全返回真。

  1. (<= w x y z)

等同于二元操作符的结合(conjunction),应用至每一对参数上:

  1. (and (<= w x) (<= x y) (<= y z))

由于 /= 若它的两个参数不等于时会返回真,表达式

  1. (/= w x y z)

等同于

  1. (and (/= w x) (/= w y) (/= w z)
  2. (/= x y) (/= y z) (/= y z))

特殊的谓词 zeroppluspminusp 接受一个参数,分别于参数 =>< 零时,返回真。虽然 -0.0 (如果实现有使用它)前面有个负号,但它 = 零,

  1. > (list (minusp -0.0) (zerop -0.0))
  2. (NIL T)

因此对 -0.0 使用 zerop ,而不是 minusp

谓词 oddpevenp 只能用在整数。前者只对奇数返回真,后者只对偶数返回真。

本节定义的谓词中,只有 =/=zerop 可以用在复数。

函数 maxmin 分别返回其参数的最大值与最小值。两者至少需要给一个参数:

  1. > (list (max 1 2 3 4 5) (min 1 2 3 4 5))
  2. (5 1)

如果参数含有浮点数的话,结果的类型取决于各家实现。