lisp - lisp 中嵌套数据列表中的 'cdadr'

标签 lisp common-lisp

在研究 conscdrcar 来处理列表时,我尝试了以下操作:

(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/

相关文章:

user-interface - sbcl 调试 cl-gtk2-gk 如果后端线程挂起

lisp - 在评估中进行小的修正来扩展 Lisp 的最简单方法是什么?

emacs - 史莱姆有什么好处?

lisp - 帮助理解 lisp 中的这一行

lisp - 与密码作斗争

sockets - 为什么套接字不设置为非阻塞模式?

LISP(将列表中间的值加一)

lisp - 寻找推荐的 AutoLisp/VisualLisp 书籍

string - 口齿不清比较

lisp - 使用普通 lisp 中的另一个定义变量定义 plist 的键