首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计划里的车和cdr快把我逼疯了

问计划里的车和cdr快把我逼疯了
EN

Stack Overflow用户
提问于 2010-04-30 20:44:38
回答 6查看 29.5K关注 0票数 16

我面临着car和cdr函数的问题

例如:

首先,我定义了一个名为x的列表

代码语言:javascript
复制
(define x (a (bc) d ( (ef) g ) ))

所以x现在等于(a (bc) d ( (ef) g ) )

例如,现在我需要只使用和cdr从列表中获取car g (!)无快捷方式为caddr cddr !!)正确的答案是:

代码语言:javascript
复制
(car(cdr(car(cdr(cdr(cdr x))))))

但是怎么做呢?我按照规则工作( car给出列表的头,cdr给出尾部)

而不是得到上面的答案,我总是得出错误的答案。有人能帮我理解这件事吗。给我一步一步或者一步一步的解决方法?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-04-30 20:55:46

试着一步一步地做:

  • cdr生成没有第一个元素的列表。
  • car生成列表的第一个元素 X是(a (bc) d( (ef) g )) (cdr x)是( (bc) d (ef) g) (cdr (cdr x))是(d (ef) g) (cdr (cdr (cdr )是(( (ef) g) (car (cdr (cdr (cdr )x )) is ( (ef) g) (cdr (cdr ) is (G) (car (cdr (cdr ) is (cdr (cdr (cdr )
票数 44
EN

Stack Overflow用户

发布于 2010-04-30 20:57:50

一次只做一个转换。cdr给出一个没有第一个元素的列表,car给出第一个元素。

代码语言:javascript
复制
(cdr (a (bc) d ( (ef) g ) )) -> ( (bc) d ( (ef) g ) )
(cdr ( (bc) d ( (ef) g ) ))  -> ( d ( (ef) g ) )
(cdr ( d ( (ef) g ) ))       -> ( ( (ef) g ) )
(car ( ( (ef) g ) ))         -> ( (ef) g )  <- pulls the first element out, which happens to be a list itself
(cdr ( (ef) g ))             -> (g)
(car (g))                    -> 'g
票数 5
EN

Stack Overflow用户

发布于 2010-05-03 20:50:34

这是获取列表值的简单/紧凑的方法。

代码语言:javascript
复制
(cadr (cadddr x))

通过组合重复的函数,您可以轻松地阅读语句。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2747562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档