pipes-safe 2.3.0 → 2.3.1
raw patch · 5 files changed
+37/−12 lines, 5 filesdep ~primitivePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: primitive
API changes (from Hackage documentation)
- Pipes.Safe: instance (Control.Monad.Catch.MonadMask m, Control.Monad.IO.Class.MonadIO m, Control.Monad.Fail.MonadFail m) => Control.Monad.Catch.MonadMask (Pipes.Internal.Proxy a' a b' b m)
- Pipes.Safe: instance (Pipes.Safe.MonadSafe m, Control.Monad.Fail.MonadFail m) => Pipes.Safe.MonadSafe (Pipes.Internal.Proxy a' a b' b m)
+ Pipes.Safe: instance (Control.Monad.Catch.MonadMask m, Control.Monad.IO.Class.MonadIO m) => Control.Monad.Catch.MonadMask (Pipes.Internal.Proxy a' a b' b m)
+ Pipes.Safe: instance Control.Monad.Fail.MonadFail m => Control.Monad.Fail.MonadFail (Pipes.Safe.SafeT m)
+ Pipes.Safe: instance Pipes.Safe.MonadSafe m => Pipes.Safe.MonadSafe (Pipes.Internal.Proxy a' a b' b m)
- Pipes.Safe.Prelude: readFile :: (MonadSafe m, MonadFail m) => FilePath -> Producer' String m ()
+ Pipes.Safe.Prelude: readFile :: MonadSafe m => FilePath -> Producer' String m ()
- Pipes.Safe.Prelude: writeFile :: (MonadSafe m, MonadFail m) => FilePath -> Consumer' String m r
+ Pipes.Safe.Prelude: writeFile :: MonadSafe m => FilePath -> Consumer' String m r
Files
- README.md +1/−1
- changelog.md +5/−0
- pipes-safe.cabal +1/−1
- src/Pipes/Safe.hs +28/−7
- src/Pipes/Safe/Prelude.hs +2/−3
README.md view
@@ -1,4 +1,4 @@-# Pipes-Safe v2.3.0+# Pipes-Safe v2.3.1 `pipes-safe` builds upon [the `pipes` library](https://github.com/Gabriel439/Haskell-Pipes-Library) to
changelog.md view
@@ -1,3 +1,8 @@+# Version 2.3.1++* Remove `MonadFail` constraints introduced in version 2.3.0+* Implement `MonadFail` for `SafeT`+ # Version 2.3.0 * BREAKING CHANGE: Support GHC 8.6.1
pipes-safe.cabal view
@@ -1,5 +1,5 @@ Name: pipes-safe-Version: 2.3.0+Version: 2.3.1 Cabal-Version: >=1.8.0.2 Build-Type: Simple License: BSD3
src/Pipes/Safe.hs view
@@ -148,7 +148,7 @@ data Restore m = Unmasked | Masked (forall x . m x -> m x) liftMask- :: forall m a' a b' b r . (MonadIO m, MonadCatch m, MonadFail m)+ :: forall m a' a b' b r . (MonadIO m, MonadCatch m) => (forall s . ((forall x . m x -> m x) -> m s) -> m s) -> ((forall x . Proxy a' a b' b m x -> Proxy a' a b' b m x) -> Proxy a' a b' b m r)@@ -172,7 +172,9 @@ unmask (Respond b fb') = Respond b (unmask . fb') unmask (M m) = M $ do -- retrieve base's unmask and apply to merged action- Masked unmaskVariant <- liftIO $ readIORef ioref+ unmaskVariant <- liftIO $ do+ Masked unmaskVariant <- readIORef ioref+ return unmaskVariant unmaskVariant (m >>= chunk >>= return . unmask) unmask (Pure q) = Pure q @@ -183,7 +185,7 @@ loop $ k unmask -instance (MonadMask m, MonadIO m, MonadFail m) => MonadMask (Proxy a' a b' b m) where+instance (MonadMask m, MonadIO m) => MonadMask (Proxy a' a b' b m) where mask = liftMask mask uninterruptibleMask = liftMask uninterruptibleMask@@ -217,9 +219,28 @@ in the event of exceptions. -} newtype SafeT m r = SafeT { unSafeT :: R.ReaderT (IORef (Maybe (Finalizers m))) m r }- deriving (Functor, Applicative, Alternative, Monad, MonadPlus, MonadFix,- EC.MonadError e, SC.MonadState s, WC.MonadWriter w, CC.MonadCont,- MonadThrow, MonadCatch, MonadMask, MonadIO, B.MonadBase b)+ deriving+ ( Functor+ , Applicative+ , Alternative+ , Monad+-- The derived instance for `MonadFail` requires a `MonadFail` instance for+-- `ReaderT` which is first available in `transformers-0.5.0.0`+#if MIN_VERSION_transformers(0,5,0)+ , MonadFail+#endif+ , MonadPlus+ , MonadFix+ , EC.MonadError e+ , SC.MonadState s+ , WC.MonadWriter w+ , CC.MonadCont+ , MonadThrow+ , MonadCatch+ , MonadMask+ , MonadIO+ , B.MonadBase b+ ) instance MonadTrans SafeT where lift m = SafeT (lift m)@@ -332,7 +353,7 @@ Just (Finalizers n fs) -> (Just $! Finalizers n (M.delete (unlock key) fs), ()) -instance (MonadSafe m, MonadFail m) => MonadSafe (Proxy a' a b' b m) where+instance MonadSafe m => MonadSafe (Proxy a' a b' b m) where type Base (Proxy a' a b' b m) = Base m liftBase = lift . liftBase register = lift . register
src/Pipes/Safe/Prelude.hs view
@@ -12,7 +12,6 @@ writeFile ) where -import Control.Monad.Fail (MonadFail) import Control.Monad.IO.Class (MonadIO(liftIO)) import Pipes (Producer', Consumer') import Pipes.Safe (bracket, MonadSafe)@@ -35,13 +34,13 @@ {-| Read lines from a file, automatically opening and closing the file as necessary -}-readFile :: (MonadSafe m, MonadFail m) => FilePath -> Producer' String m ()+readFile :: MonadSafe m => FilePath -> Producer' String m () readFile file = withFile file IO.ReadMode P.fromHandle {-# INLINABLE readFile #-} {-| Write lines to a file, automatically opening and closing the file as necessary -}-writeFile :: (MonadSafe m, MonadFail m) => FilePath -> Consumer' String m r+writeFile :: MonadSafe m => FilePath -> Consumer' String m r writeFile file = withFile file IO.WriteMode P.toHandle {-# INLINABLE writeFile #-}