【发布时间】:2013-11-08 00:31:40
【问题描述】:
所以我得到了这个函数,它接收一个列表作为参数
(defun do-transf (lst)
...
我最初的 lst 是 ((NIL NIL) (NIL NIL)) 但最后我希望 lst 变成
(零零零零)
例子
(defvar a (list (list NIL NIL) (list NIL NIL)))
(do-transf a)
(NIL NIL NIL NIL) -> 给出了正确的答案,但是当我调用列表时,这不是答案
一个
((NIL NIL) (NIL NIL)) -> 我不想要这个
【问题讨论】:
-
我知道您希望这具有破坏性(来自答案之一的 cmets),但究竟如何?在第一种情况下,
a是两个元素的列表(每个元素都等于(nil nil),但我们暂时称它们为x和y)。所以a是(x . (y . nil)),即由两个cons 单元组成的列表,我们称它们为xc和yc。您想要的结果是(n1 . (n2 . (n3 . (n4 . nil))))(n代表nil),这是一个由四个 cons 单元格组成的列表。xc和yc可以重复使用,但是另外两个从哪里来?
标签: lisp common-lisp