考虑这个清单:((3(1(2 15)(8 5)))(1 10)),我想得到它的头和身体。 正如我想象的那样,“汽车”程序在这里工作: (汽车'((3(1(2 15)(8 5)))(1 10))) - 返回其第一项(清单)
(3(1(2 15)(8 5)))
但是程序“cdr:返回包含另一个列表的列表...... (cdr'((3(1(2 15)(8 5)))(110)))
((1 10))
我想(110)代替它。 Scheme是否有一些程序或你知道某种方法来达到它(比如检查前两个字符和后两个字符是否是括号)?
谢谢大家:)
答案 0 :(得分: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和knwo它就像(cadr '(a . (b . (c . (d)))))