累積シーケンスを作成するにはどうすればいいですか? 質問する

累積シーケンスを作成するにはどうすればいいですか? 質問する

次のような遅延シーケンスがあるとします。

(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

ベストアンサー1

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

おすすめ記事