別のタイプをフィードするとData.Enumerator.List.map
互換Iteratee
性のあるものと同様の関数を作成しました。Enumerator
Stream
import Data.Enumerator
test :: Monad m => (ao -> ai) -> Iteratee ai m b -> Iteratee ao m b
test f iter = go $$ iter
where go (Continue k) = continue $
\stream -> go $$ k (fmap f stream)
go (Yield res _) = yield res EOF
の型署名を省略した場合go
、これは問題なく機能します。しかし、それを含めたいのですが、正しい署名がどうあるべきかを判断できません。これが私がそうあるべきだと思うものです:
go :: Monad m => Step ai m b -> Iteratee ao m b
しかし、それは機能しません。
の正しい型アノテーションを見つけるためのアドバイスが必要ですgo
。