我编写了一个类似于Data.Enumerator.List.map
使 an与提供不同类型的 anIteratee
兼容的函数。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
.