1st Edition

This commit is contained in:
Mac David 2013-12-10 00:08:11 +08:00
parent 2ba6501acc
commit 1bb3cea0c2

View File

@ -374,7 +374,8 @@ nil ; 逻辑假,或者空列表
(= 2 1) ; => nil
;; 若要比较对象的类型,则使用`eql`
;;(译者注:抱歉,请忽略这句翻译;`eql`在二者`eq`等价,或者同为数字与字符下相同的类型,例如同为整形数或浮点数,并且他们的值相等时,二者`eql`等价)
;;(译者注:抱歉,翻译水平实在有限,下面是我个人的补充说明)
;;`eql`在二者`eq`等价,或者同为数字与字符下相同的类型,例如同为整形数或浮点数,并且他们的值相等时,二者`eql`等价)
;; (想要弄清`eql`,其实有必要先了解`eq`)
;;可以去CLHS上分别查看两者的文档另外《实用Common Lisp编程》里的4.8节也提到了两者的区别)
(eql 3 3) ; => t
@ -589,7 +590,8 @@ nil ; 逻辑假,或者空列表
;; 反引号'`'是一种所谓“quasiquote”的引用类型的运算符有了它之后的逗号“,”才有意义。
;; 逗号“,”意味着解除引用unquote即开始求值“@”符号则表示将当前的参数插入到当前整个列表中。
;;(译者注:这三个符号只不过是语法糖罢了,而要想真正用好、用对,需要下一番功夫)
;;(甚至光看《实用 Common Lisp 编程》中关于宏的介绍都是不够的建议再去读一读Paul Graham的两本著作《ANSI Common Lisp》和《On Lisp》
;;(甚至光看《实用 Common Lisp 编程》中关于宏的介绍都是不够的)
;;建议再去读一读Paul Graham的两本著作《ANSI Common Lisp》和《On Lisp》
;; 函数`gensym`创建一个唯一的符号——这个符号确保不会出现在其他任何地方。
;; 这样做是因为,宏是在编译期展开的,而在宏中声明的变量名极有可能和常规代码中使用的变量名发生冲突。