我需要一些结合使用 list
的启示和quote
。
这是我所看到的:
[1]> (list '1)
(1)
很公平。 (list '1)
变成"('1)"
其计算结果为 (1)
自 '
只返回它后面的内容。
[2]> (list 'quote 1)
'1
为什么不1
,为什么 '
在这里没有被评估,因为:
[3]> '1
1
作为一个一般性问题,评估过程将尝试递归地解决它能找到的所有内容,我是否错了?
最佳答案
由于 list
应该构造一个参数列表,因此如果它返回一个数字,那就很奇怪了。事实上,'1
是一个两元素列表,包含符号 quote
和数字 1 作为其元素:
CL-USER> (first (list 'quote 1))
QUOTE
CL-USER> (second (list 'quote 1))
1
它显示为 '1
而不是 (QUOTE 1)
的原因是你的 Lisp 系统打印以 quote
开头的单元素列表> 特别是。
(list '1)
becomes"('1)"
which evaluates to(1)
这是不正确的。由于 list
是一个普通函数,因此对其参数形式进行求值以给出每个参数的值。在这种情况下,表单 '1
将被计算为值 1
,list
将接收该值作为其单个参数。没有对返回值进行评估。
关于lisp - 为什么 (列出 'quote 1) evaluates to ' 1 而不是 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50083120/