Clojure関数
(reductions + 0 (cycle [1 1 -1]))
シーケンス[012 1 2 3 2 3 4 3 45...]を生成します。残念ながら、このシーケンスは怠惰ではありません。
cycle
とは両方ともレイジーシーケンスを返すものとして文書化されているのでreductions
、これらの関数のこの組み合わせがレイジーシーケンスも返すことを期待していました。なぜそれができないのですか、そしてどうすればシーケンスを怠惰に返すように修正できますか?
同じ問題を示すより複雑な例:
(reductions (fn [x f] (f x)) 0 (cycle [inc inc dec]))
(これは、何か違いが生じた場合に備えて、最終的に機能させたいバージョンであるため、これを示します)