Как сделать кумулятивную последовательность? - программирование
Подтвердить что ты не робот

Как сделать кумулятивную последовательность?

Скажем, у меня есть ленивая последовательность, например:

(def s (iterate inc 1))
(take 10 s)
=> (1 2 3 4 5 6 7 8 9 10)

Теперь я хочу сгенерировать последовательность суммарной суммы s следующим образом:

=> (1 3 6 10 15 ...)

Как я могу это сделать? Я попытался использовать atom и аккумулировать сумму к ней (мутируя). Это единственный способ генерации кумулятивной последовательности или есть лучший способ сделать это?

ПРИМЕЧАНИЕ: приведенная выше совокупная сумма является лишь примером. Последовательность источника может быть другой последовательностью. Поэтому я не могу использовать формулу: s(n) = n(n+1)/2

4b9b3361

Ответ 1

(take 10 (reductions + s))
=> (1 3 6 10 15 21 28 36 45 55)