List 获取lisp中cons的非列表值

List 获取lisp中cons的非列表值,list,lisp,scheme,cons,List,Lisp,Scheme,Cons,我正在scheme(lisp)中创建一个函数,其中我需要将列表与之相反,如下所示: (cons list (cdr (reverse list))) 假设我有这个列表(0 1 2),所需的输出将是: (0 1 2 1 0) 但我得到: ((0 1 2) 1 0) 是否有任何函数返回列表的值,而不是列表本身?您应该阅读cons: cons将一个元素与另一个元素配对。如果将一个元素与列表配对,则在列表的开头添加此元素。在您的情况下,与反向列表配对的元素本身就是一个列表。请参见wiki页面上的示

我正在scheme(lisp)中创建一个函数,其中我需要将列表与之相反,如下所示:

(cons list (cdr (reverse list)))
假设我有这个列表(0 1 2),所需的输出将是:

(0 1 2 1 0)
但我得到:

((0 1 2) 1 0)

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

您应该阅读
cons

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

这里需要的是
追加
,因为您希望将这两个列表连接在一起。

如下追加:

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

希望有帮助:)

看起来像是家庭作业。记住,列表是成对的。画一张你的清单的图片,它的反面和你想要成对的结果——这应该会有帮助。