【发布时间】:2012-09-11 21:02:23
【问题描述】:
可以使用流(惰性列表)从多个(为简单起见说两个)源中按需提取。迭代器可用于处理来自单一来源的数据。
是否有类似 Iteratee 的功能概念来处理多个输入源?我可以想象一个 Iteratee 的状态信号,它想从哪个源提取。
【问题讨论】:
-
所以你有两个来源,你想从哪个最先获得事件?
-
从多个来源中提取的任何方式都可能等同于将两个来源合并为一个的某种方式。有很多方法可以做到这一点;你能澄清一下你在寻找什么行为吗?
-
我想到了一些通用的东西,接收器可以根据状态控制要拉哪个源。具体的场景是合并两个排序的流,所以我得到元素的键相等的元组,并且不成对的元素被丢弃。
-
任何 iteratee 库都可以通过简单地堆叠 monad 来做到这一点。奥列格首先展示了如何(okmij.org/ftp/Streams.html#2enum1iter)。我已经将它与我自己的 iteratee 包一起使用。它适用于其中任何一个。
-
@John:谢谢!顺便说一句,我记得我已经听过“奥列格先出现”这句话:)
标签: scala haskell functional-programming iterate