我想在Lisp中压缩一个列表,例如:
(1 2 (3 (4 5) 6)) --> (1 2 3 4 5 6)
这是我写的代码:
(defun flatten (l)
(cond
((endp l) nil)
((listp (car l)) (cons (flatten (car l)) (flatten (cdr l))))
((atom (car l)) (cons (car l) (flatten (cdr l))))))
我不知道这里有什么问题。我甚至在一个论坛上找到了完全相同的代码,并且该人说它正在工作,但这段代码根本没有改变我的列表。一些帮助?