9.3 比较 (Comparison)
谓词 =
比较其参数,当数值上相等时 ── 即两者的差为零时,返回真。
> (= 1 1.0)
T
> (eql 1 1.0)
NIL
=
比起 eql
来得宽松,但参数的类型需一致。
用来比较数字的谓词为 <
(小于)、 <=
(小于等于)、 =
(等于)、 >=
(大于等于)、 >
(大于) 以及 /=
(不相等)。以上所有皆接受一个或多个参数。只有一个参数时,它们全返回真。
(<= w x y z)
等同于二元操作符的结合(conjunction),应用至每一对参数上:
(and (<= w x) (<= x y) (<= y z))
由于 /=
若它的两个参数不等于时会返回真,表达式
(/= w x y z)
等同于
(and (/= w x) (/= w y) (/= w z)
(/= x y) (/= y z) (/= y z))
特殊的谓词 zerop
、 plusp
与 minusp
接受一个参数,分别于参数 =
、 >
、 <
零时,返回真。虽然 -0.0
(如果实现有使用它)前面有个负号,但它 =
零,
> (list (minusp -0.0) (zerop -0.0))
(NIL T)
因此对 -0.0
使用 zerop
,而不是 minusp
。
谓词 oddp
与 evenp
只能用在整数。前者只对奇数返回真,后者只对偶数返回真。
本节定义的谓词中,只有 =
、 /=
与 zerop
可以用在复数。
函数 max
与 min
分别返回其参数的最大值与最小值。两者至少需要给一个参数:
> (list (max 1 2 3 4 5) (min 1 2 3 4 5))
(5 1)
如果参数含有浮点数的话,结果的类型取决于各家实现。
当前内容版权归 readthedocs 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 readthedocs .