我有这样的表现,Lisp语言列表操作问题
(write (cdr (car' ('(p q) r))))
这给((P Q))
作为输出。我一整天都在挠头,仍然无法弄清楚它是如何工作的。
这样做只是car
部分给出,
(write (car' ('(p q) r)))
给'(P Q)
。
然后,根据我的(cdr '(P Q))
应该给(Q)
作为输出。
最终答案如何,'(P Q)
是我的问题。
我有这样的表现,Lisp语言列表操作问题
(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))))
这是什么神秘'car''功能,您似乎可以用?你真的想用'''引号两次吗? –
我收到了这样的表达方式!看看链接, – saruftw
我想你可能会找到[在嵌套引用列表中替换元素添加新元素的答案?](http://stackoverflow.com/questions/24370500/replace-elements-in-nested-quoted -lists-adds-new-elements)有帮助。 –