На этой неделе у меня есть новое домашнее задание, я должен написать функцию 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
?
заранее спасибо
bearzk