尝试反转Scheme中的列表

发布于 2024-10-31 16:48:19 字数 255 浏览 3 评论 0原文

预先警告:这是一个家庭作业问题。我正在尝试编写一个反转列表的方案函数。 '(1 2 3) 变为 '(3 2 1) 等。我不允许使用执行此操作的预定义函数。

我在这里写的内容是否正确?

;myReverse
(define (myReverse list)
    (if (null? list) '()
        (append (myReverse(cdr list)) car list)))

谢谢!

Be forewarned: this is a homework problem. I'm trying to write a Scheme function that reverses a list. '(1 2 3) becomes '(3 2 1), etc. I'm not allowed to use the predefined function that does this.

Am I on the right track with what I wrote here?

;myReverse
(define (myReverse list)
    (if (null? list) '()
        (append (myReverse(cdr list)) car list)))

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

倾`听者〃 2024-11-07 16:48:19

好吧,使用 list 作为名称会很奇怪,因为Scheme 是 Lisp-1。而是将其称为lst

想一想您可以使用 foldlcons'()lst 做什么。

Well, using list as an name is going to be odd, since Scheme is a Lisp-1. Call it lst instead.

Think about what you can do with foldl, cons, '(), and lst.

撩人痒 2024-11-07 16:48:19

我在这里写的内容是否正确?

是的。需要考虑的一些事情:

  • list 是一个内置函数名称,您可能实际上想在此解决方案中使用它,因此您可能不应该将您的形式命名为
  • 您忘记了 周围的括号>car list
  • append 需要两个列表;你向它传递一个列表和一个数字

    <前><代码>> (附加'(1)2)
    (1 . 2)
    > (附加'(1)'(2))
    (1 2)

Am I on the right track with what I wrote here?

Yes. Some things to consider:

  • list is a built-in function name, and one you might actually want to use in this solution, so you probably shouldn't name your formal that
  • You forgot the parentheses around car list
  • append expects two lists; you're passing it a list and a number

    > (append '(1) 2)
    (1 . 2)
    > (append '(1) '(2))
    (1 2)
    
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文