summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--zh-cn/common-lisp.html.markdown40
1 files changed, 21 insertions, 19 deletions
diff --git a/zh-cn/common-lisp.html.markdown b/zh-cn/common-lisp.html.markdown
index aaa33c83..acecf60c 100644
--- a/zh-cn/common-lisp.html.markdown
+++ b/zh-cn/common-lisp.html.markdown
@@ -1,10 +1,10 @@
---
Language: "Common Lisp"
Filename: commonlisp.lisp
-Contributors:
+Contributor:
- ["Paul Nathan", "https://github.com/pnathan"]
Translator:
- - ["Mac David", "http://github.com/macdavid313"]
+ - ["Mac David", "http://macdavid313.com"]
---
ANSI Common Lisp 是一个广泛通用于各个工业领域的、支持多种范式的编程语言。
@@ -31,9 +31,9 @@ ANSI Common Lisp 是一个广泛通用于各个工业领域的、支持多种范
t ;还是一个原子,代表逻辑真值。
-(+ 1 2 3 4) ; 一个S表达式。
+(+ 1 2 3 4) ; 一个S-表达式。
-'(4 :foo t) ;同样是一个S表达式。
+'(4 :foo t) ;同样是一个S-表达式。
;;; 注释
@@ -146,7 +146,7 @@ nil ; 逻辑假,或者空列表
(defparameter *AΛB* nil)
-;; 访问一个在之前从未未绑定的变量是一种不规范的行为(即使依然是可能发生的);
+;; 访问一个在之前从未被绑定的变量是一种不规范的行为(即使依然是可能发生的);
;; 不要尝试那样做。
@@ -211,7 +211,7 @@ nil ; 逻辑假,或者空列表
;;; 向量
-;; 向量的字面意义是一个定长数组(译者注:此处所谓字面意义的,即为#(......)的形式,下文还会出现)
+;; 向量的字面意义是一个定长数组(译者注:此处所谓“字面意义”,即指#(......)的形式,下文还会出现)
#(1 2 3) ; => #(1 2 3)
;; 使用`concatenate`来将两个向量首尾连接在一起
@@ -282,10 +282,12 @@ nil ; 逻辑假,或者空列表
(gethash 'a *m*) ; => 1, t
;; 注意此处有一细节:Common Lisp的`gethash`往往会返回两个值。
-;; (译者注:返回的第一个值表示给定的键所对应的值或者nil,第二个则表示在哈希表中是否存在这个给定的键)
+;;(译者注:返回的第一个值表示给定的键所对应的值或者nil;)
+;;(第二个是一个布尔值,表示在哈希表中是否存在这个给定的键)
;; 例如,如果可以找到给定的键所对应的值,则返回一个t,否则返回nil
-;; 由给定的键检索一个不存在的值,则返回nil(译者注:即第一个nil,第二个nil其实是指该键在哈希表中也不存在)
+;; 由给定的键检索一个不存在的值,则返回nil
+;;(译者注:这个nil是第一个nil,第二个nil其实是指该键在哈希表中也不存在)
(gethash 'd *m*) ;=> nil, nil
;; 给定一个键,你可以指定其对应的默认值:
@@ -310,7 +312,7 @@ nil ; 逻辑假,或者空列表
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 使用`lambda`来创建一个匿名函数。
-;; 一个函数总是返回其最后一个表达式的值。
+;; 一个函数总是返回其形式体内最后一个表达式的值。
;; 将一个函数对象打印出来后的形式是多种多样的...
(lambda () "Hello World") ; => #<FUNCTION (LAMBDA ()) {1004E7818B}>
@@ -352,7 +354,7 @@ nil ; 逻辑假,或者空列表
; => Hello, Steve, from the alpacas
-;; 当然,你也可以设置关键字形参;
+;; 当然,你也可以设置所谓关键字形参;
;; 关键字形参往往比可选形参更具灵活性。
(defun generalized-greeter (name &key (from "the world") (honorific "Mx"))
@@ -377,7 +379,7 @@ nil ; 逻辑假,或者空列表
;;(译者注:抱歉,翻译水平实在有限,下面是我个人的补充说明)
;;(`eql`在二者`eq`等价,或者同为数字与字符下相同的类型,例如同为整形数或浮点数,并且他们的值相等时,二者`eql`等价)
;; (想要弄清`eql`,其实有必要先了解`eq`)
-;;(可以去CLHS上分别查看两者的文档,另外,《实用Common Lisp编程》里的4.8节也提到了两者的区别)
+;;(可以去CLHS上分别查看两者的文档,另外,《实用Common Lisp编程》的4.8节也提到了两者的区别)
(eql 3 3) ; => t
(eql 3 3.0) ; => nil
(eql (list 3) (list 3)) ; => nil
@@ -455,7 +457,7 @@ nil ; 逻辑假,或者空列表
;; 所谓好的Lisp编码风格就是为了减少破坏性函数的使用,防止副作用的发生。
;;(译者注:很惭愧,确实不明白原作者所说的"Mutation",即这里的“变异”到底指的是什么特性)
-;;(毕竟他只给了一个例子,我猜测应该是和词法变量、闭包等特性有关,还望高人指点)
+;;(我猜测应该是和词法变量、闭包等特性有关,还望高人指点、修正与完善)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 7. 类与对象
@@ -501,7 +503,7 @@ nil ; 逻辑假,或者空列表
:initarg :number-of-rowers)))
-;; 在REPL中对human-powered-conveyance类调用`DESCRIBE`如下:
+;; 在REPL中对human-powered-conveyance类调用`DESCRIBE`后结果如下:
(describe 'human-powered-conveyance)
@@ -533,7 +535,7 @@ nil ; 逻辑假,或者空列表
;; pi在Common Lisp中已经是一个内置的常量。
-;; 假设我们已经知道效率值(“efficiency value”)和船桨数大概呈对数关系;
+;; 假设我们已经知道了效率值(“efficiency value”)和船桨数大概呈对数关系;
;; 那么效率值的定义应当在构造器/初始化过程中就被完成。
;; 下面是一个如何初始化实例的例子:
@@ -548,15 +550,13 @@ nil ; 逻辑假,或者空列表
; => 2.7725887
-
-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 8. 宏
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 宏可以让你扩展语法
-;; Common Lisp并没有自带WHILE循环——所以让我们自己来为他添加一个;
+;; 例如,Common Lisp并没有自带WHILE循环——所以让我们自己来为他添加一个;
;; 如果按照“拼装者”的直觉来看,我们会这样写:
(defmacro while (condition &body body)
@@ -573,7 +573,6 @@ nil ; 逻辑假,或者空列表
;; 让我们来看看它的高级版本:
-
(defmacro while (condition &body body)
"While `condition` is true, `body` is executed.
@@ -589,7 +588,7 @@ nil ; 逻辑假,或者空列表
;; 注意到反引号'`',逗号','以及'@'符号,这三个符号;
;; 反引号'`'是一种所谓“quasiquote”的引用类型的运算符,有了它,之后的逗号“,”才有意义。
;; 逗号“,”意味着解除引用(unquote,即开始求值);“@”符号则表示将当前的参数插入到当前整个列表中。
-;;(译者注:这三个符号只不过是语法糖罢了,而要想真正用好、用对,需要下一番功夫)
+;;(译者注:要想真正用好、用对这三个符号,需要下一番功夫)
;;(甚至光看《实用 Common Lisp 编程》中关于宏的介绍都是不够的)
;;(建议再去读一读Paul Graham的两本著作《ANSI Common Lisp》和《On Lisp》)
@@ -610,3 +609,6 @@ nil ; 逻辑假,或者空列表
非常感谢Scheme社区的人们,我基于他们的成果得以迅速的写出这篇有关Common Lisp的快速入门
同时也感谢
- [Paul Khuong](https://github.com/pkhuong) ,他提出了很多有用的点评。
+
+##译者寄语
+“祝福那些将思想镶嵌在重重括号之内的人们。” \ No newline at end of file