【发布时间】:2011-06-27 16:33:36
【问题描述】:
这周我有新的作业要做,我应该写一个函数partSums,它可以在原始流中添加元素来构建新的流:
(element0,element0+element1,element0+element1+element2...)
结果应该以0开头。
在此示例中,我假设我们有一个名为 integers 的函数来生成类似于 Haskell 中的流 [1..],因此在其上使用 partSums 应该如下所示:
(partSums integers)
> '(1, 3, 6, 10, 15...)
在我的理解中是这样的:
1 2 3 4 5 6 7 8..
1 2 3 4 5 6 7..
1 2 3 4 5 6..
1 2 3 4 5..
1 2 3 4..
1 2 .
+ .
1 3 6 10 15 21 .....
添加我已经完成的 2 个流:
(define (add-streams s1 s2)
(cond ((empty-stream? s1) s2)
((empty-stream? s2) s1)
(else (cons-stream
(+ (head s1)(head s2))
(add-streams (tail s1) (tail s2))))))
我也有函数head、tail、cons-stream,它们是car、cdr、cons用于流。
谁能帮我完成这个partSums?
提前致谢
熊熊
【问题讨论】: