免责声明:这是最近在 haskell-cafe 列表上提出的问题。我向任何受到双重职位困扰的人道歉。
我所知道的所有迭代实现包(例如iteratee
、iterIO
和conduit
)都定义了一个枚举组合函数,但enumerator
包除外。在我看来,这似乎是一个严重的限制,但实现起来也相对简单:
import Data.Enumerator
import Data.Enumerator.Internal
(=$=) :: Monad m
=> Enumeratee a0 a1 m (Step a2 m b) -> Enumeratee a1 a2 m b
-> Enumeratee a0 a2 m b
(=$=) e01 e12 step = Iteratee $ do
step' <- runIteratee $ e12 step
runIteratee . joinI $ e01 step'
这里有一些我想念的问题吗?还是其他一些enumerator
不定义枚举组成的原因?