packages feed

resourcet 0.3.2.2 → 0.3.3

raw patch · 2 files changed

+36/−2 lines, 2 filesdep +mtlPVP ok

version bump matches the API change (PVP)

Dependencies added: mtl

API changes (from Hackage documentation)

+ Control.Monad.Trans.Resource: instance MonadCont m => MonadCont (ResourceT m)
+ Control.Monad.Trans.Resource: instance MonadError e m => MonadError e (ResourceT m)
+ Control.Monad.Trans.Resource: instance MonadRWS r w s m => MonadRWS r w s (ResourceT m)
+ Control.Monad.Trans.Resource: instance MonadReader r m => MonadReader r (ResourceT m)
+ Control.Monad.Trans.Resource: instance MonadState s m => MonadState s (ResourceT m)
+ Control.Monad.Trans.Resource: instance MonadWriter w m => MonadWriter w (ResourceT m)

Files

Control/Monad/Trans/Resource.hs view
@@ -70,6 +70,13 @@ import Control.Monad.Trans.Writer   ( WriterT  ) import Control.Monad.Trans.RWS      ( RWST     ) +import Control.Monad.Cont.Class   ( MonadCont (..) )+import Control.Monad.Error.Class  ( MonadError (..) )+import Control.Monad.RWS.Class    ( MonadRWS (..) )+import Control.Monad.Reader.Class ( MonadReader (..) )+import Control.Monad.State.Class  ( MonadState (..) )+import Control.Monad.Writer.Class ( MonadWriter (..) )+ import Data.Word (Word)  import qualified Control.Monad.Trans.RWS.Strict    as Strict ( RWST   )@@ -119,7 +126,7 @@ -- a release action will only ever be called once. -- -- Since 0.3.0-newtype ResourceT m a = ResourceT (I.IORef ReleaseMap -> m a)+newtype ResourceT m a = ResourceT { unResourceT :: I.IORef ReleaseMap -> m a }  instance Typeable1 m => Typeable1 (ResourceT m) where     typeOf1 = goType undefined@@ -134,6 +141,32 @@ #endif                 [ typeOf1 m                 ]++instance MonadCont m => MonadCont (ResourceT m) where+  callCC f = ResourceT $ \i -> callCC $ \c -> unResourceT (f (ResourceT . const . c)) i++instance MonadError e m => MonadError e (ResourceT m) where+  throwError = lift . throwError+  catchError r h = ResourceT $ \i -> unResourceT r i `catchError` \e -> unResourceT (h e) i++instance MonadRWS r w s m => MonadRWS r w s (ResourceT m)++instance MonadReader r m => MonadReader r (ResourceT m) where+  ask = lift ask+  local = mapResourceT . local++mapResourceT :: (m a -> n b) -> ResourceT m a -> ResourceT n b+mapResourceT f = ResourceT . (f .) . unResourceT++instance MonadState s m => MonadState s (ResourceT m) where+  get = lift get+  put = lift . put++instance MonadWriter w m => MonadWriter w (ResourceT m) where+  tell   = lift . tell+  listen = mapResourceT listen+  pass   = mapResourceT pass+  -- | A @Monad@ which allows for safe resource allocation. In theory, any monad -- transformer stack included a @ResourceT@ can be an instance of
resourcet.cabal view
@@ -1,5 +1,5 @@ Name:                resourcet-Version:             0.3.2.2+Version:             0.3.3 Synopsis:            Deterministic allocation and freeing of scarce resources. Description: 	This package was originally included with the conduit package, and has since been split off. For more information, please see <http://www.yesodweb.com/book/conduits>.@@ -20,6 +20,7 @@                      , monad-control            >= 0.3.1        && < 0.4                      , containers                      , transformers             >= 0.2.2        && < 0.4+                     , mtl                      >= 2.0          && < 2.2   ghc-options:     -Wall  source-repository head