尝试反转Scheme中的列表
预先警告:这是一个家庭作业问题。我正在尝试编写一个反转列表的方案函数。 '(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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
好吧,使用
list
作为名称会很奇怪,因为Scheme 是 Lisp-1。而是将其称为lst
。想一想您可以使用
foldl
、cons
、'()
和lst
做什么。Well, using
list
as an name is going to be odd, since Scheme is a Lisp-1. Call itlst
instead.Think about what you can do with
foldl
,cons
,'()
, andlst
.是的。需要考虑的一些事情:
list
是一个内置函数名称,您可能实际上想在此解决方案中使用它,因此您可能不应该将您的形式命名为周围的括号>car list
append
需要两个列表;你向它传递一个列表和一个数字<前><代码>> (附加'(1)2)
(1 . 2)
> (附加'(1)'(2))
(1 2)
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 thatcar list
append
expects two lists; you're passing it a list and a number