【发布时间】:2017-12-11 18:10:23
【问题描述】:
我尝试在所有主列表级别将列表中的某个元素 E 替换为另一个列表 K。
(defun replaceList(l e k)
(cond
((null l) nil)
((equal e (car l)) (cons k (replaceList (cdr l) e k)))
((listp (car l))
((equal e (car (car l))) (cons k (replaceList (cdr (car l)) e k))))
(t (cons (car l) (replaceList (cdr l) e k)))))
例子:
(replaceList '(3 1 2 (6 1) 7 (5 (5 (3 1))) 9) '1 '(99 99))
--> (3 (99 99) 2 (6 (99 99)) 7 (5 (5 (3 (99 99) ) ) ) 9)
我得到一些带有 lambda 表达式的错误信息。
另外,我尝试了而不是 listp(car l) "block" :
((listp (car l)) (cons k (replaceList (cdr (car l)) e k)))。
我得到一些奇怪的东西:
(2 1 3 ( 6 1 7) 7 1 2 ) -> (2 (99 99) 3 (99 99) (99 99) 7)
【问题讨论】:
-
“我得到一些带有 lambda 表达式的错误信息”——请复制并粘贴确切的错误信息。
标签: syntax-error lisp common-lisp