9.4 算术 (Arithematic)

用来做加减的函数是 +- 。两者皆接受任何数量的参数,包括没有参数,在没有参数的情况下返回 0 。(译注: - 在没有参数的情况下会报错,至少要一个参数)一个这样形式的表达式 (- n) 返回 -n 。一个这样形式的表达式

  1. (- x y z)

等同于

  1. (- (- x y) z)

有两个函数 1+1- ,分别将参数加 1 与减 1 后返回。 1- 有一点误导,因为 (1- x) 返回 x-1 而不是 1-x

incfdecf 分别递增与递减数字。这样形式的表达式 (incf x n) 类似于 (setf x (+ x n)) 的效果,而 (decf x n) 类似于 (setf x (- x n)) 的效果。这两个形式里,第二个参数皆是选择性给入的,缺省值为 1

用来做乘法的函数是 * 。接受任何数量的参数。没有参数时返回 1 。否则返回参数的乘积。

除法函数 / 至少要给一个参数。这样形式的调用 (/ n) 等同于 (/ 1 n)

  1. > (/ 3)
  2. 1/3

而这样形式的调用

  1. (/ x y z)

等同于

  1. (/ (/ x y) z)

注意 -/ 两者在这方面的相似性。

当给定两个整数时, / 若第一个不是第二个的倍数时,会返回一个比值:

  1. > (/ 365 12)
  2. 365/12

举例来说,如果你试着找出平均每一个月有多长,可能会有解释器在逗你玩的感觉。在这个情况下,你需要的是,对比值调用 float ,而不是对两个整数做 /

  1. > (float 365/12)
  2. 30.416666