resourcet-1.2.6: Deterministic allocation and freeing of scarce resources.
Safe Haskell None
Language Haskell2010

Control.Monad.Trans.Resource.Internal

Synopsis

Documentation

class MonadIO m => MonadResource m where Source #

A Monad which allows for safe resource allocation. In theory, any monad transformer stack which includes a ResourceT can be an instance of MonadResource .

Note: runResourceT has a requirement for a MonadUnliftIO m monad, which allows control operations to be lifted. A MonadResource does not have this requirement. This means that transformers such as ContT can be an instance of MonadResource . However, the ContT wrapper will need to be unwrapped before calling runResourceT .

Since 0.3.0

Methods

liftResourceT :: ResourceT IO a -> m a Source #

Lift a ResourceT IO action into the current Monad .

Since 0.4.0

Instances

Instances details
MonadResource m => MonadResource ( MaybeT m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

MonadResource m => MonadResource ( ListT m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

MonadIO m => MonadResource ( ResourceT m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

MonadResource m => MonadResource ( ExceptT e m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

MonadResource m => MonadResource ( IdentityT m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

MonadResource m => MonadResource ( ReaderT r m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

MonadResource m => MonadResource ( StateT s m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

MonadResource m => MonadResource ( StateT s m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

( Monoid w, MonadResource m) => MonadResource ( WriterT w m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

( Monoid w, MonadResource m) => MonadResource ( WriterT w m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

MonadResource m => MonadResource ( ContT r m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

( Monoid w, MonadResource m) => MonadResource ( RWST r w s m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

( Monoid w, MonadResource m) => MonadResource ( RWST r w s m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

data ReleaseKey Source #

A lookup key for a specific release action. This value is returned by register and allocate , and is passed to release .

Since 0.3.0

type ResIO = ResourceT IO Source #

Convenient alias for ResourceT IO .

newtype ResourceT m a Source #

The Resource transformer. This transformer keeps track of all registered actions, and calls them upon exit (via runResourceT ). Actions may be registered via register , or resources may be allocated atomically via allocate . allocate corresponds closely to bracket .

Releasing may be performed before exit via the release function. This is a highly recommended optimization, as it will ensure that scarce resources are freed early. Note that calling release will deregister the action, so that a release action will only ever be called once.

Since 0.3.0

Instances

Instances details
MonadTrans ResourceT Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

MonadRWS r w s m => MonadRWS r w s ( ResourceT m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

MonadWriter w m => MonadWriter w ( ResourceT m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

MonadState s m => MonadState s ( ResourceT m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

MonadReader r m => MonadReader r ( ResourceT m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

MonadError e m => MonadError e ( ResourceT m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

Monad m => Monad ( ResourceT m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

Functor m => Functor ( ResourceT m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

MonadFix m => MonadFix ( ResourceT m) Source #

Since: 1.1.8

Instance details

Defined in Control.Monad.Trans.Resource.Internal

MonadFail m => MonadFail ( ResourceT m) Source #

Since: 1.2.2

Instance details

Defined in Control.Monad.Trans.Resource.Internal

Applicative m => Applicative ( ResourceT m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

MonadIO m => MonadIO ( ResourceT m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

Alternative m => Alternative ( ResourceT m) Source #

Since 1.1.5

Instance details

Defined in Control.Monad.Trans.Resource.Internal

MonadPlus m => MonadPlus ( ResourceT m) Source #

Since 1.1.5

Instance details

Defined in Control.Monad.Trans.Resource.Internal

MonadThrow m => MonadThrow ( ResourceT m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

MonadCatch m => MonadCatch ( ResourceT m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

MonadMask m => MonadMask ( ResourceT m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

MonadCont m => MonadCont ( ResourceT m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

PrimMonad m => PrimMonad ( ResourceT m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

Associated Types

type PrimState ( ResourceT m) Source #

MonadUnliftIO m => MonadUnliftIO ( ResourceT m) Source #

Since: 1.1.10

Instance details

Defined in Control.Monad.Trans.Resource.Internal

Methods

withRunInIO :: (( forall a. ResourceT m a -> IO a) -> IO b) -> ResourceT m b Source #

MonadIO m => MonadResource ( ResourceT m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

type PrimState ( ResourceT m) Source #
Instance details

Defined in Control.Monad.Trans.Resource.Internal

transResourceT :: (m a -> n b) -> ResourceT m a -> ResourceT n b Source #

Transform the monad a ResourceT lives in. This is most often used to strip or add new transformers to a stack, e.g. to run a ReaderT .

Note that this function is a slight generalization of hoist .

Since 0.3.0

stateCleanupChecked Source #

Arguments

:: Maybe SomeException

exception that killed the ResourceT , if present

-> IORef ReleaseMap
-> IO ()

Clean up a release map, but throw a ResourceCleanupException if anything goes wrong in the cleanup handlers.

Since: 1.1.11