我在 scheme(lisp) 中创建了一个函数,在该函数中我需要用它反转一个列表,如下所示:
(cons list (cdr (reverse list)))
考虑我有这个列表'(0 1 2),所需的输出将是:
(0 1 2 1 0)
但我得到:
((0 1 2) 1 0)
是否有任何函数返回列表的值,而不是列表本身?
你应该阅读cons
:http ://en.wikipedia.org/wiki/Cons
cons
将一个元素与另一个元素配对。如果将元素与列表配对,则将此元素添加到列表的开头。在您的情况下,您与反向列表配对的元素本身就是一个列表。请参阅 wiki 页面上的示例。
您想要的是append
,因为您想将这两个列表连接在一起。
像这样附加它:
(define (mirror ls)
(if (null? (cdr ls))
ls
(let ((x (car ls)))
(append
(list x)
(mirror (cdr ls))
(list x)))))
希望能帮助到你 :)