0

我在 scheme(lisp) 中创建了一个函数,在该函数中我需要用它反转一个列表,如下所示:

(cons list (cdr (reverse list)))

考虑我有这个列表'(0 1 2),所需的输出将是:

(0 1 2 1 0)

但我得到:

((0 1 2) 1 0)

是否有任何函数返回列表的值,而不是列表本身?

4

2 回答 2

2

你应该阅读conshttp ://en.wikipedia.org/wiki/Cons

cons将一个元素与另一个元素配对。如果将元素与列表配对,则将此元素添加到列表的开头。在您的情况下,您与反向列表配对的元素本身就是一个列表。请参阅 wiki 页面上的示例。

您想要的是append,因为您想将这两个列表连接在一起。

于 2012-11-11T13:24:52.837 回答
0

像这样附加它:

(define (mirror ls)
    (if (null? (cdr ls))
        ls
        (let ((x (car ls)))
            (append 
                (list x)
                (mirror (cdr ls))
                (list x)))))

希望能帮助到你 :)

于 2012-11-11T19:01:56.007 回答