如果我有一个数组a:
a[a.length]回报nil.好.a[a.length, x]回报[].好.a[a.length+x, y]回报nil.与2不一致.虽然这种行为被记录在案,这似乎很奇怪.
任何人都可以解释这种设计背后的原因吗?
我开始学习Scheme,主要是为了好玩,因为我之前从未使用过函数式语言.我之所以选择Scheme,是因为我想长时间阅读SICP.
无论如何,我目前正在学习列表,在此之前我了解了cons,car和cdr.还有一个例子可以创建一个带有缺点的列表列表,如下所示:
(cons (list 1 2) (list 3 4))
Run Code Online (Sandbox Code Playgroud)
结果列表是((1 2)3 4),这对我没有意义,我希望((1 2)(3 4))是结果(由两个列表组成的列表).为什么它表现得那样?我意识到,如果我要使用汽车,我会得到(1 2),而cdr我会得到(3 4)因为cdr总是返回"其余的",但我不明白为什么列表没有制作两个名单?
(define ..
(lambda (start stop)
(cond ((> (add1 start) stop) (quote ()))
((eq? (add1 start) stop) (sub1 stop))
(else (cons start (.. (add1 start) stop))))))
Run Code Online (Sandbox Code Playgroud)
我已经定义了一个简单的范围函数.目的是为了
(.. 1 5) --> (1 2 3 4)
Run Code Online (Sandbox Code Playgroud)
相反,我的元组中添加了一个奇怪的时期,我不明白为什么:
(.. 1 5) --> (1 2 3 . 4)
Run Code Online (Sandbox Code Playgroud)
我不明白为什么会这样.任何帮助表示赞赏