List 获取lisp中cons的非列表值
我正在scheme(lisp)中创建一个函数,其中我需要将列表与之相反,如下所示: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页面上的示
(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)))))
希望有帮助:)看起来像是家庭作业。记住,列表是成对的。画一张你的清单的图片,它的反面和你想要成对的结果——这应该会有帮助。