我面临着car和cdr函数的问题
例如:
首先,我定义了一个名为x的列表
(define x (a (bc) d ( (ef) g ) ))所以x现在等于(a (bc) d ( (ef) g ) )
例如,现在我需要只使用和cdr从列表中获取car g (!)无快捷方式为caddr cddr !!)正确的答案是:
(car(cdr(car(cdr(cdr(cdr x))))))但是怎么做呢?我按照规则工作( car给出列表的头,cdr给出尾部)
而不是得到上面的答案,我总是得出错误的答案。有人能帮我理解这件事吗。给我一步一步或者一步一步的解决方法?
发布于 2010-04-30 20:55:46
试着一步一步地做:
发布于 2010-04-30 20:57:50
一次只做一个转换。cdr给出一个没有第一个元素的列表,car给出第一个元素。
(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发布于 2010-05-03 20:50:34
这是获取列表值的简单/紧凑的方法。
(cadr (cadddr x))通过组合重复的函数,您可以轻松地阅读语句。
https://stackoverflow.com/questions/2747562
复制相似问题