在通过介绍性的Lisp书的主要部分之后,我仍然无法理解特殊运算符(quote)
(或等效的'
)函数的作用,但这已经是我见过的所有Lisp代码.
它有什么作用?
我'
对球拍中的标志的含义有点困惑.在我看来,同一个标志有不同的含义.请看下面的两个简单示例:
返回包含vs作为其元素的新分配列表.
> (list 1 2 3 4)
'(1 2 3 4)
Run Code Online (Sandbox Code Playgroud)
生成对应于数据的常量值(即,程序片段的表示),而不包含其词汇信息,源位置等.引用的对,向量和框是不可变的.
> '(1 2 3 4)
'(1 2 3 4)
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:'
符号是否有2个含义(符号和列表)或这些是相同的数据类型并list
实际返回引用的常量值?如果第二种情况是这样的话:
> '(+ (- 2 13) 11)
'(+ (- 2 13) 11)
> (eval (list + (- 2 13) 11))
0
Run Code Online (Sandbox Code Playgroud)
(也(eval '(+ (- 2 13) 11))
正常工作和评估0
)
但这不是:
> (list + (- 2 13) 11)
'(#<procedure:+> -11 11) …
Run Code Online (Sandbox Code Playgroud)