diff options
author | Mac David <macdavid313@Macs-MacBook-Pro.local> | 2013-12-10 19:04:35 +0800 |
---|---|---|
committer | Mac David <macdavid313@Macs-MacBook-Pro.local> | 2013-12-10 19:04:35 +0800 |
commit | ba78de82349549f521c899dd45493e0d9b20659c (patch) | |
tree | c2cfde625cb0815dd6b5f6e3ead84deb34d6b751 /zh-cn/common-lisp.html.markdown | |
parent | 139a9af08c1095bd655a3fc324da093969f78be2 (diff) |
Just update and correct some contents
Diffstat (limited to 'zh-cn/common-lisp.html.markdown')
-rw-r--r-- | zh-cn/common-lisp.html.markdown | 40 |
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 |