Scheme - 没有外括号的cdr

时间:2014-04-11 17:33:59

标签: scheme lisp cdr

考虑这个清单:((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是否有一些程序或你知道某种方法来达到它(比如检查前两个字符和后两个字符是否是括号)?

谢谢大家:)

1 个答案:

答案 0 :(得分:3)

基本上你有carcadrcaddr,...来获取第一,第二,第三元素......

列表是一个链接列表,其中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)))))

一样