【问题标题】:Getting values not list for cons in lisp在lisp中获取未列出缺点的值
【发布时间】:2012-11-11 12:41:41
【问题描述】:

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

(cons list (cdr (reverse list)))

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

(0 1 2 1 0)

但我明白了:

((0 1 2) 1 0)

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

【问题讨论】:

  • 看起来像家庭作业。请记住,列表由对组成。画一张你的列表的图片,它的反面和你想要的结果成对 - 它应该会有所帮助。

标签: list lisp scheme cons


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    像这样添加它:

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

    希望对你有帮助:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-30
      • 1970-01-01
      • 2015-06-24
      • 2012-04-20
      • 1970-01-01
      • 2017-05-29
      相关资源
      最近更新 更多