Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 枚举器与iteratee包的比较_Loops_Haskell_Enumerator - Fatal编程技术网

Loops 枚举器与iteratee包的比较

Loops 枚举器与iteratee包的比较,loops,haskell,enumerator,Loops,Haskell,Enumerator,目前,有两种流行的选择可以实现: 和 这个 它们的相对好处是什么?一个比另一个好,还是取决于用例(如果是,决定使用哪一个的标准是什么)?至少有三个迭代库: 统计员 迭代尔 伊泰里奥 我相信枚举器库是当前首选的库,因为它简单。如果你介意的话,这也是我在项目中使用的。另外两个包更灵活,有时速度更快,但它们也更复杂。如果您想学习迭代器,我建议从枚举器开始。这是奥列格最初想法的最直接的实现 如果你有一个特定的用例,需要使用标准的迭代方法,那么你可能需要考虑使用迭代器包。在更复杂的场景中,您可能还

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

  • 这个

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

至少有三个迭代库:

  • 统计员
  • 迭代尔
  • 伊泰里奥
我相信枚举器库是当前首选的库,因为它简单。如果你介意的话,这也是我在项目中使用的。另外两个包更灵活,有时速度更快,但它们也更复杂。如果您想学习迭代器,我建议从枚举器开始。这是奥列格最初想法的最直接的实现

如果你有一个特定的用例,需要使用标准的迭代方法,那么你可能需要考虑使用迭代器包。在更复杂的场景中,您可能还想尝试iterIO软件包,它有一个稍微不同且更灵活的概念。尤其是迭代者可以与枚举器通信,这在其他两个包中是不可能的


如果这三个包都不够灵活,那么您可能希望自己使用monad协程包编写协程。迭代器和枚举器是一种特殊类型的协程,可以用某种方式组合。monad coroutine包为您提供了通用类型,并允许您使用自己的交互概念。

一个小问题:
iteratee
iteratees也可以与枚举器通信。例如,这就是
seek
的实现方式。不过,它不像
iterIO
机制那样复杂。@ertes,其他属性呢,例如效率/性能?不能合并使用同一个迭代尔库的库吗?通常情况下,这两个库彼此不兼容。iterIO是否真的“更复杂”?我认为它的整个目标是通过统一迭代器和枚举器的概念来简化。