我正在在方案(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)))))
希望它有帮助:)