在lisp中展平非线性列表

时间:2018-01-13 16:08:58

标签: list linked-list common-lisp flatten

我想在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))))))

我不知道这里有什么问题。我甚至在一个论坛上找到了完全相同的代码,并且该人说它正在工作,但这段代码根本没有改变我的列表。一些帮助?

0 个答案:

没有答案