获取值不在lisp中列出缺点

时间:2012-11-11 12:41:41

标签: list lisp scheme cons

我正在计划(lisp)中创建一个函数,我需要反向列出一个列表,如下所示:

(cons list (cdr (reverse list)))

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

(0 1 2 1 0)

但我明白了:

((0 1 2) 1 0)

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

2 个答案:

答案 0 :(得分:2)

您应该阅读conshttp://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)))))

希望有所帮助:)