我有这个表达,
(write (cdr (car' ('(p q) r))))
以((P Q))
作为输出。我整天都在摸不着头脑,仍然无法弄清楚这是怎么回事。
只做car
部分,
(write (car' ('(p q) r)))
给出'(P Q)
。
然后,据我所知(cdr '(P Q))
应该(Q)
作为输出。
最终答案如何,'(P Q)
是我的问题。
答案 0 :(得分:6)
你有一个额外的引用(第一个坚持car
,但仍然正确解析)导致引用的引用,所以你基本上有:
(write (cdr (car '((quote (p q)) r))))
采用car
只留下数据:
(quote (p q))
再次将cdr
的结果导入数据:
(p q)
正如你所观察到的那样。如果你用汽车看车而不是
(write (car (car '((quote (p q)) r))))
你应该看到
quote
本身。请注意,'(a b)
和(quote (a b))
是相同的,并且您使用的任何内容的打印输出都可能显示任何一种形式。
所以你要做的就是删除额外的引用,即:
(write (cdr (car '((p q) r))))