gpt4 book ai didi

elixir - 创建具有变化状态的惰性序列(流),例如斐波那契数?

转载 作者:行者123 更新时间:2023-12-04 23:43:27 26 4
gpt4 key购买 nike

问题:是否可以创建 Elixir Stream在内部保持某种状态,每次调用都会改变?代码看起来如何?

我很高兴看到 Elixir 0.10.2 拥有 Stream s 除了正常的 Enum模块。虽然有关于如何使用 Stream 的文档s 几乎没有文档,也没有描述如何创建它们的全局可搜索文档。阅读 Stream 的源代码模块不是很有启发性。我也研究过Lazily concatenate an enumerable of lists及其答案,虽然非常有趣,但它也没有涉及改变状态。

考虑在需要记住前两个值的地方生成斐波那契数。或者想想Clojure's lazy sequence for prime numbers .

我首先理解这是否可能的问题是:

  • 记录的enumerable element 仅由一些示例设置,并且始终设置为现有的固定列表。处理无限序列的例子不要碰enumerable完全没有(例如 iteraterepeat )。
  • fun 提供的功能应该返回另一个函数,而不是新的 Stream.Lazy记录,据我所知,这与 Clojure 的惰性序列有很大不同,在这种惰性序列中,您返回一个带有 lazy-seq 的新序列.
  • 蓄能器如何acc用起来还是有些超出我的。它看起来像 fun不会自行修改;取而代之的是一些外部函数调用 fun做。

  • 因此我的问题。

    最佳答案

    Stream.unfold/2让您在保持“累加器”(状态)的同时生成一系列值。

    我刚刚在这里使用它构建了一个惰性斐波那契序列函数:https://github.com/seven1m/30-days-of-elixir/blob/master/24-stream.exs#L31-33

    关于elixir - 创建具有变化状态的惰性序列(流),例如斐波那契数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18702623/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com