在研究 cons
、cdr
和 car
来处理列表时,我尝试了以下操作:
(cadr '('(1) '(2)))
'(2)
它按预期给出了列表中的第二项。 而以下给出:
(cdadr '('(1) '(2)))
((2))
如何将数据与代码协调一致并且仍然不出错?
这是如何评估的?
'(2) 上的 cdr 应该给出 nil,确实如此。为什么不在上面?
[我是 clisp 和 stackoverflow 的新手,所以请原谅。]
最佳答案
quote
是一个特殊的运算符,它返回它的单个未计算的参数。可以使用 '
缩写形式 (quote ...)
作为 '...
。由于 '
由阅读器处理,因此表单
'('(1) '(2)))
实际上读起来和
一样(quote ((quote (1)) (quote (2)))
参数((quote (1)) (quote (2)))
的最外层应用程序quote
返回该参数。该参数的 cadr
是列表
(quote (2))
它的第一个元素是符号quote
,它的第二个元素是单个元素的列表2
。
关于lisp - lisp 中嵌套数据列表中的 'cdadr',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18697105/