Skip to content

Commit

Permalink
[zhCN] REVIEWING ch9
Browse files Browse the repository at this point in the history
  • Loading branch information
JuanitoFatas committed Dec 23, 2012
1 parent 61a332b commit fcb16b8
Showing 1 changed file with 26 additions and 45 deletions.
71 changes: 26 additions & 45 deletions zhCN/ch9-cn.rst
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ Lisp 提供四种不同类型的数字的转换及取出位数的函数。函数
9.3 比较 (Comparison)
================================

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

::

Expand All @@ -116,21 +116,21 @@ Lisp 提供四种不同类型的数字的转换及取出位数的函数。函数
> (eql 1 1.0)
NIL

``=`` 比起 ``eql`` 来得宽松,但它的参数需要是同样类型
``=`` 比起 ``eql`` 来得宽松,但参数的类型需一致

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

::

(<= w x y z)

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

::

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

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

::

Expand All @@ -143,18 +143,18 @@ Lisp 提供四种不同类型的数字的转换及取出位数的函数。函数
(and (/= w x) (/= w y) (/= w z)
(/= x y) (/= y z) (/= y z))

特殊的判断式 ``zerop`` , ``plusp`` 与 ``minusp`` 接受一个参数,分别於参数 ``=`` , ``>`` , ``<`` 零时,返回真。虽然 ``-0.0`` (如果实现有使用它) 前面有个负号,但它 ``=`` 零,
特殊的谓词 ``zerop`` ``plusp`` 与 ``minusp`` 接受一个参数,分别於参数 ``=`` ``>`` ``<`` 零时,返回真。虽然 ``-0.0`` 如果实现有使用它前面有个负号,但它 ``=`` 零,

::

> (list (minusp -0.0) (zerop -0.0))
(NIL T)

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

判断式 ``oddp`` 与 ``evenp`` 只能用在整数。前者只对奇数返回真,後者只对偶数返回真。
谓词 ``oddp`` 与 ``evenp`` 只能用在整数。前者只对奇数返回真,後者只对偶数返回真。

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

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

Expand All @@ -163,12 +163,12 @@ Lisp 提供四种不同类型的数字的转换及取出位数的函数。函数
> (list (max 1 2 3 4 5) (min 1 2 3 4 5))
(5 1)

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

9.4 算术 (Arithematic)
===================================================

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

::

Expand All @@ -180,20 +180,20 @@ Lisp 提供四种不同类型的数字的转换及取出位数的函数。函数

(- (- x y) z)

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

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

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

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

::

> (/ 3)
1/3

而一个这样形式的调用
而这样形式的调用

::

Expand All @@ -214,7 +214,7 @@ Lisp 提供四种不同类型的数字的转换及取出位数的函数。函数
> (/ 365 12)
365/12

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

::

Expand All @@ -224,14 +224,14 @@ Lisp 提供四种不同类型的数字的转换及取出位数的函数。函数
9.5 指数 (Exponentiation)
=======================================

要找到 :math:`x^n` 我们调用 ``(expt x n)`` ,
要找到 :math:`x^n` 调用 ``(expt x n)`` ,

::

> (expt 2 5)
32

而要找到 :math:`log_nx` 我们调用 ``(log x n)`` :
而要找到 :math:`log_nx` 调用 ``(log x n)`` :

::

Expand All @@ -247,7 +247,7 @@ Lisp 提供四种不同类型的数字的转换及取出位数的函数。函数
> (exp 2)
7.389056

而要找到一个自然对数,你可以使用 ``log`` 就好,因为第二个参数缺省为 ``e`` :
而要找到自然对数,你可以使用 ``log`` 就好,因为第二个参数缺省为 ``e`` :

::

Expand All @@ -271,7 +271,7 @@ Lisp 提供四种不同类型的数字的转换及取出位数的函数。函数
9.6 三角函数 (Trigometric Functions)
=======================================

常量 ``pi`` 是 ``π`` 的浮点表示法。它的精度 (precision)取决於各家实现。函数 ``sin`` , ``cos`` 及 ``tan`` 分别可以找到正弦、馀弦及正交函数,其中角度以径度 (radian)表示:
常量 ``pi`` 是 ``π`` 的浮点表示法。它的精度取决於各家实现。函数 ``sin`` ``cos`` 及 ``tan`` 分别可以找到正弦、馀弦及正交函数,其中角度以径度表示:

::

Expand All @@ -281,30 +281,11 @@ Lisp 提供四种不同类型的数字的转换及取出位数的函数。函数
;;; 译注: CCL 1.8 SBCL 1.0.55 下的结果是
;;; (0.7071067811865475D0 0.7071067811865476D0 0.9999999999999999D0)

这些函数全部接受负数及复数参数
这些函数都接受负数及复数参数

函数 ``asin`` , ``acos`` 及 ``atan`` 实现了正弦、馀弦及正交的反函数 (inverse)。参数介於 ``-1`` 与 ``1`` 之间(包含)时, ``asin`` 与 ``acos`` 返回实数。
函数 ``asin`` ``acos`` 及 ``atan`` 实现了正弦、馀弦及正交的反函数。参数介於 ``-1`` 与 ``1`` 之间(包含)时, ``asin`` 与 ``acos`` 返回实数。

双曲 (hyperbolic)正弦、馀弦及正交分别由 ``sinh`` , ``cosh`` 及 ``tanh`` 实现。它们的反函数同样为 ``asinh`` , ``acosh`` 以及 ``atanh`` 。

9.6 三角函数 (Trigometric Functions)
=======================================

常量 ``pi`` 是 ``π`` 的浮点表示法。它的精度 (precision)取决於各家实现。函数 ``sin`` , ``cos`` 及 ``tan`` 分别可以找到正弦、馀弦及正交函数,其中角度以径度 (radian)表示:

::

> (let ((x (/ pi 4)))
(list (sin x) (cos x) (tan x)))
(0.7071067811865475d0 0.7071067811865476d0 1.0d0)
;;; 译注: CCL 1.8 SBCL 1.0.55 下的结果是
;;; (0.7071067811865475D0 0.7071067811865476D0 0.9999999999999999D0)

这些函数全部接受负数及复数参数。

函数 ``asin`` , ``acos`` 及 ``atan`` 实现了正弦、馀弦及正交的反函数 (inverse)。参数介於 ``-1`` 与 ``1`` 之间(包含)时, ``asin`` 与 ``acos`` 返回实数。

双曲的 (hyperbolic)正弦、馀弦及正交分别由 ``sinh`` , ``cosh`` 及 ``tanh`` 实现。它们的反函数同样为 ``asinh`` , ``acosh`` 以及 ``atanh`` 。
双曲正弦、双曲馀弦及双曲正交分别由 ``sinh`` 、 ``cosh`` 及 ``tanh`` 实现。它们的反函数同样为 ``asinh`` 、 ``acosh`` 以及 ``atanh`` 。

9.7 表示法 (Representations)
=======================================
Expand All @@ -325,7 +306,7 @@ Common Lisp 对於整数的大小没有限制。可以塞进一个字 (word)内
4611686018427387903
-4611686018427387904

判断式 ``typep`` 接受一个参数及一个类型名称,并返回指定类型的参数。所以,
谓词 ``typep`` 接受一个参数及一个类型名称,并返回指定类型的参数。所以,

::

Expand Down Expand Up @@ -592,7 +573,7 @@ Chapter 9 总结 (Summary)

2. 数字可以被约分或转换 (converted),而它们的位数 (components)可以被取出。

3. 用来比较数字的判断式可以接受任意数量的参数,以及比较下一数对 (successive pairs) –– `/=` 函数除外,它是用来比较所有的数对 (pairs)。
3. 用来比较数字的谓词可以接受任意数量的参数,以及比较下一数对 (successive pairs) –– `/=` 函数除外,它是用来比较所有的数对 (pairs)。

4. Common Lisp 几乎提供你在低阶科学计算机可以看到的数值函数。同样的函数普遍可应用在多种类型的数字上。

Expand Down

0 comments on commit fcb16b8

Please sign in to comment.