枚举器与迭代器包的比较

时间:2011-10-06 13:02:32

标签: haskell enumerator iterate

目前,有两种流行的选择可以实现iteratee pattern

他们的相对好处是什么?是一个比另一个更好,还是取决于用例(如果是的话,决定使用哪个的标准是什么)?

1 个答案:

答案 0 :(得分:20)

至少有三个iteratee库:

  • 枚举
  • iteratee
  • iterIO

我认为枚举器库目前是首选的,因为它简单。如果你关心的话,它也是我用于我的项目的那个。另外两个软件包更灵活,有时可以更快,但它们也更复杂。如果你想学习迭代,我建议从枚举器开始。这是Oleg最初想法的最直接实现。

如果您有特定用例并且需要使用标准iteratee方法的许多功能,您可能需要考虑使用 iteratee 包。在更复杂的场景中,您可能还想尝试 iterIO 包,它具有略微不同且更灵活的概念。特别是迭代器可以与枚举器通信,这在其他两个包中是不可能的。

如果所有三个软件包都不够灵活,您可能希望自己使用 monad-coroutine 软件包编写协同程序。 Iteratees和枚举器是一种特殊类型的协同程序,可以以某种方式组成。 monad-coroutine 包为您提供一般类型,并允许您使用自己的交互概念。