【发布时间】:2014-08-13 18:19:18
【问题描述】:
我有一个嵌套列表,我正在尝试非破坏性地替换它的所有元素(也在嵌套列表内)。也就是说,给定我的输入列表
'(1 '(2 3 4) '(5 6 7) 8 9)
我正在努力实现
'(0 '(0 0 0) '(0 0 0) 0 0)
我尝试了以下
(defun subs-list (list value)
"Replaces all elements of a list of list with given value"
(loop for elt in list
collect (if (listp elt)
(subs-list elt value)
value)))
但是当我尝试时
(subs-list '(1 '(2 3 4) '(5 6 7) 8 9) 0)
(0 (0 (0 0 0)) (0 (0 0 0)) 0 0)
是我得到的输出。 我做错了什么?
【问题讨论】:
-
您确定
'(1 '(2 3 4) '(5 6 7) 8 9)是一个有用的列表吗?我在 Lisp 的实际应用中从未见过这样的列表。嵌套的引用列表通常没有任何意义,并且表明对 Lisp 中的引用有错误的理解。 -
@RainerJoswig,你是对的,我最初被认为 ' 是 (list) 的缩写。我的实际输入是
(list 1 (list 2 3 4) (list 5 6 7) 8 9)
标签: lisp common-lisp