问题:是否有可能创建一个 Elixir Stream
,在内部保持某种状态,每次调用都会改变?代码看起来如何?
我很高兴看到 Elixir 0.10.2Stream
除了普通Enum
模块之外还有 s。虽然有关于如何使用Stream
s 的文档,但几乎没有文档或描述如何创建它们的全局可搜索文档。阅读Stream
模块的源代码并不是很有启发性。我还研究了 Lazily 连接一个可枚举的列表及其答案,虽然非常有趣,但它也没有涉及改变状态。
考虑在需要记住前两个值的地方生成斐波那契数。或者想想Clojure 的素数惰性序列。
我首先理解这是否可能的问题是:
- 记录的
enumerable
元素仅由一些示例设置,并且始终设置为现有的固定列表。处理无限序列的示例根本不涉及enumerable
(例如iterate
orrepeat
)。 - 提供的函数
fun
应该返回另一个函数,而不是新Stream.Lazy
记录,据我所知,这与 Clojure 的惰性序列有很大的不同,在这种惰性序列中,您使用lazy-seq
. - 累加器
acc
的使用方式仍然有些超出我的理解。看起来fun
它本身并没有修改它;取而代之的是一些调用dos的外部函数fun
。
因此我的问题。