Это продолжение моего предыдущего вопроса.
Данная функция add_stream(s1:Stream[Int], s2:Stream[Int]):Stream[Int]
Я хотел бы кодировать running_sums(s:Stream[Int]):Stream[Int]
, который возвращает новый поток: s1, s1 + s2, s1 + s2 + s3, ...
Я могу думать о следующей реализации, но она не работает, если s
пусто
def running_sums(s:Stream[Int]):Stream[Int] =
Stream.cons(s.head, add_streams(s.tail, running_sums(s)))
Я могу исправить это следующим образом:
def running_sums(s:Stream[Int]):Stream[Int] =
if (s.isEmpty) empty
else Stream.cons(s.head, add_streams(s.tail, running_sums(s)))
Однако это не выглядит элегантно.
Как бы вы внедрили running_sums
?