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