试图反转Scheme中的列表

时间:2011-04-12 03:23:27

标签: list recursion scheme reverse

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

我在这里写的是正确的轨道吗?

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

谢谢!

2 个答案:

答案 0 :(得分:1)

好吧,使用list作为名称将是奇怪的,因为Scheme是一个Lisp-1。改为称呼lst

考虑使用foldlcons'()lst可以做些什么。

答案 1 :(得分:1)

  

我在这里写的是正确的轨道吗?

是。有些事情需要考虑:

  • list是一个内置的函数名,你可能真的想在这个解决方案中使用它,所以你可能不应该将你的正式命名为
  • 您忘记了car list
  • 周围的括号
  • append需要两个列表;你传给它一个列表和一个数字

    > (append '(1) 2)
    (1 . 2)
    > (append '(1) '(2))
    (1 2)