免責事項: これは haskell-cafe リストで最近質問されたものです。二重投稿でお騒がせした方にはお詫び申し上げます。
私が知っているすべての iteratee 実装パッケージ (例: iteratee
、iterIO
、およびconduit
) は、パッケージを除いて、enumeratee 構成関数を定義し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
または、列挙型の構成を定義しない他の理由はありますか?