0

考虑这个列表:((3 (1 (2 15) (8 5))) (1 10)),我想得到它的头部和身体。正如我想象的那样,程序“汽车”在这里工作: (car '((3 (1 (2 15) (8 5))) (1 10))) - 返回它的第一项(列表)

(3 (1 (2 15) (8 5)))

但是过程“cdr:返回包含另一个列表的列表... (cdr '((3 (1 (2 15) (8 5))) (1 10)))

((1 10))

我想用 (1 10) 代替它。Scheme 是否有一些程序或者你知道一些方法来达到它(比如检查前两个字符和后两个字符是否是括号)?

谢谢你们:)

4

1 回答 1

3

基本上你有car, cadr, caddr, ... 来获得第一个,第二个,第三个元素,...

列表是一个链表,其中cons有一个值,car而列表的其余部分在它的 中cdr'(a b c d)是一样的'(a . (b . (c . (d)))),你可以用(cons a (cons b (cons c (cons d '())))). cdr它会是(b . (c . (d)))car那又会是b。因此(car (cdr '(a . (b . (c . (d))))))b。Scheme 已经对 2..5 进行了缩写,因此您只需查看中间的 char 并知道它与(cadr '(a . (b . (c . (d)))))

于 2014-04-11T18:09:56.740 回答