simple-pipe 0.0.0.9 → 0.0.0.10
raw patch · 2 files changed
+13/−3 lines, 2 filesPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
API changes (from Hackage documentation)
+ Data.Pipe: instance MonadError m => MonadError (Pipe i o m)
Files
- simple-pipe.cabal +2/−2
- src/Data/Pipe.hs +11/−1
simple-pipe.cabal view
@@ -2,7 +2,7 @@ cabal-version: >= 1.8 name: simple-pipe-version: 0.0.0.9+version: 0.0.0.10 stability: Experimental author: Yoshikuni Jujo <PAF01143@nifty.ne.jp> maintainer: Yoshikuni Jujo <PAF01143@nifty.ne.jp>@@ -87,7 +87,7 @@ source-repository this type: git location: git://github.com/YoshikuniJujo/simple-pipe.git- tag: simple-pipe-0.0.0.9+ tag: simple-pipe-0.0.0.10 library hs-source-dirs: src
src/Data/Pipe.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE FlexibleContexts, RankNTypes, PackageImports #-}+{-# LANGUAGE TypeFamilies, FlexibleContexts, RankNTypes, PackageImports #-} module Data.Pipe ( PipeClass(..), Pipe, finally, bracket ) where @@ -7,6 +7,7 @@ import Control.Exception.Lifted (onException) import Control.Monad.Trans.Control import "monads-tf" Control.Monad.Trans+import "monads-tf" Control.Monad.Error class PipeClass p where runPipe :: Monad m => p i o m r -> m (Maybe r)@@ -25,6 +26,15 @@ | Need (m ()) (Maybe i -> Pipe i o m r) | Done (m ()) r | Make (m ()) (m (Pipe i o m r))++instance MonadError m => MonadError (Pipe i o m) where+ type ErrorType (Pipe i o m) = ErrorType m+ throwError e = Make (return ()) $ throwError e+ Ready f o p `catchError` c = Ready f o $ p `catchError` c+ Need f p `catchError` c = Need f $ \mi -> p mi `catchError` c+ Done f r `catchError` _ = Done f r+ Make f p `catchError` c =+ Make f . ((`catchError` c) `liftM`) $ p `catchError` (return . c) finalizer :: Pipe i o m r -> m () finalizer (Ready f _ _) = f