22

Say I have a lazy sequence like the following:

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

Now, I want to generate a sequence of cumulative sum of s like the following:

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

How can I do this? What I tried is to use atom and accumulate the sum to it(mutating) Is this the only way to generate cumulative sequence or is there a better way to do this?

NOTE: the above cumulative sum is only an example. The source sequence can be other sequence. So I can't use formula: s(n) = n(n+1)/2

Nathan Hughes
  • 94,330
  • 19
  • 181
  • 276
ntalbs
  • 28,700
  • 8
  • 66
  • 83

1 Answers1

35
(take 10 (reductions + s))
=> (1 3 6 10 15 21 28 36 45 55)
A. Webb
  • 26,227
  • 1
  • 63
  • 95