http://www.yesodweb.com/book/conduitsのコードを理解しようとしています。いくつかの修正 ( に置き換えるなど) の後Resource
でMonadResource
も、コンパイルされません。
sumSink :: MonadResource m => Sink Int m Int
sumSink = CL.fold (+) 0
sum' :: [Int] -> Int
sum' input = runST $ runResourceT $ CL.sourceList input $$ sumSink
次のエラーが表示されます。
Couldn't match type `GHC.ST.ST s' with `IO'
When using functional dependencies to combine
Control.Monad.Trans.Control.MonadBaseControl
(GHC.ST.ST s) (GHC.ST.ST s),
arising from the dependency `m -> b'
in the instance declaration in `Control.Monad.Trans.Control'
Control.Monad.Trans.Control.MonadBaseControl IO (GHC.ST.ST s),
arising from a use of `runResourceT'
at D:\Works\stablename\test.hs:43:22-33
In the expression: runResourceT
In the second argument of `($)', namely
`runResourceT $ CL.sourceList input $$ sumSink'
私はGHC 7.4.1とconduit-0.4.2を使用しています。
PS 壊れていないチュートリアルや、conduit-0.4 を念頭に置いて書かれたチュートリアルはありますか?