我有这个表情
(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))))