我有这个表情
(write (cdr (car' ('(p q) r))))
它((P Q))
作为输出。我整天都在摸不着头脑,仍然无法弄清楚这是如何工作的。
只做car
部分给出,
(write (car' ('(p q) r)))
给'(P Q)
.
然后,根据我(cdr '(P Q))
应该给(Q)
作为输出。
最后的答案如何,'(P Q)
是我的问题。
我有这个表情
(write (cdr (car' ('(p q) r))))
它((P Q))
作为输出。我整天都在摸不着头脑,仍然无法弄清楚这是如何工作的。
只做car
部分给出,
(write (car' ('(p q) r)))
给'(P Q)
.
然后,根据我(cdr '(P Q))
应该给(Q)
作为输出。
最后的答案如何,'(P Q)
是我的问题。
你有一个额外的报价(第一个被卡在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))))