我必须反转一个简单(一维)列表的元素。我知道有一个内置的反向功能,但我不能为此使用它。
这是我的尝试:
(defun LISTREVERSE (LISTR)
(cond
((< (length LISTR) 2) LISTR) ; listr is 1 atom or smaller
(t (cons (LISTREVERSE (cdr LISTR)) (car LISTR))) ; move first to the end
)
)
输出非常接近,但是是错误的。
[88]> (LISTREVERSE '(0 1 2 3))
((((3) . 2) . 1) . 0)
所以我尝试使用append
而不是cons
:
(t (append (LISTREVERSE (cdr LISTR)) (car LISTR)))
但是得到了这个错误:
*** - APPEND: A proper list must not end with 2
有什么帮助吗?