方案中的 car 和 cdr 让我发疯
我遇到了 car
和 cdr
函数的问题
例如,
:首先我定义了一个名为 x 的列表
(define x (a (bc) d ( (ef) g ) ))
,所以 x 现在等于 (a (bc ) d ( (ef) g ) )
例如,现在我需要仅使用 car
和 cdr
g > (!! noshortcuts as caddr cddr !!) 正确答案是:
(car(cdr(car(cdr(cdr(cdr x))))))
但是如何呢?我按照规则工作(car
给出列表的头部,cdr
给出列表的尾部),
但我没有得到上面的答案,而是不断得到错误的答案。 谁能帮助我理解这一点......给我一个步骤或一步一步解决它的方法?
I'm facing a problem with the car
and cdr
functions
for example:
first I defined a list called it x
(define x (a (bc) d ( (ef) g ) ))
so x now is equal to (a (bc) d ( (ef) g ) )
now for example I need to get the g from this list using only car
and cdr
(!! noshortcuts as caddr cddr !!) the correct answer is:
(car(cdr(car(cdr(cdr(cdr x))))))
But how? I work according to the rules (the car
gives the head of the list and cdr
gives the tail)
and instead of getting the answer above, I keep reaching wrong answers.
Can anyone help me in understanding this ... give me a step or a way to solve it step by step?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
尝试一步步执行:
car 生成列表的第一个元素
Try to do it step by step:
car yields the first element of a list
一次进行一个转换。 cdr 为您提供一个没有第一个元素的列表,car 为您提供第一个元素。
do the transforms one at a time. cdr gives you a list without the first element, car gives you the first element.
这是获取列表值的简单/紧凑的方法。
通过组合重复函数,您可以获得优雅且易于阅读的语句。
this is easy/compact way to get the value of the list.
by combining repeating functions, you get elegant easy to read statement.
您是否尝试过使用 REPL(read-eval-print-loop),例如 CSIS?这样您就可以交互式地解决这个问题,这将使您更容易使用Scheme 学习和解决这个(以及其他)问题。
Have you tried using a REPL (read-eval-print-loop) such as csi? That way you can work on this interactively, which will make it easier for you to learn and work through this (and other) problems using Scheme.
迭代地进行。另外,要意识到该计划总是向后看。
希望有帮助
do it iteratively. Also, realize that scheme always looks backwards.
hope that helps