persistent-mtl-0.5.1: Monad transformer for the persistent API
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Monad.IO.Rerunnable

Description

Defines the MonadRerunnableIO type class that is functionally equivalent to MonadIO, but use of it requires the user to explicitly acknowledge that the given IO operation can be rerun.

Synopsis

Documentation

class Monad m => MonadRerunnableIO m where Source #

A copy of MonadIO to explicitly allow only IO operations that are rerunnable, e.g. in the context of a SQL transaction.

Methods

rerunnableIO :: IO a -> m a Source #

Lift the given IO operation to m.

The given IO operation may be rerun, so use of this function requires manually verifying that the given IO operation is rerunnable.

Instances

Instances details
MonadRerunnableIO IO Source # 
Instance details

Defined in Control.Monad.IO.Rerunnable

Methods

rerunnableIO :: IO a -> IO a Source #

MonadRerunnableIO m => MonadRerunnableIO (SqlQueryT m) Source # 
Instance details

Defined in Database.Persist.Monad

Methods

rerunnableIO :: IO a -> SqlQueryT m a Source #

MonadRerunnableIO m => MonadRerunnableIO (SqlTransaction m) Source # 
Instance details

Defined in Database.Persist.Monad.Internal.SqlTransaction

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

Defined in Control.Monad.IO.Rerunnable

Methods

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

MonadRerunnableIO m => MonadRerunnableIO (MaybeT m) Source # 
Instance details

Defined in Control.Monad.IO.Rerunnable

Methods

rerunnableIO :: IO a -> MaybeT m a Source #

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

Defined in Control.Monad.IO.Rerunnable

Methods

rerunnableIO :: IO a -> ExceptT e m a Source #

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

Defined in Control.Monad.IO.Rerunnable

Methods

rerunnableIO :: IO a -> IdentityT m a Source #

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

Defined in Control.Monad.IO.Rerunnable

Methods

rerunnableIO :: IO a -> ReaderT r m a Source #

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

Defined in Control.Monad.IO.Rerunnable

Methods

rerunnableIO :: IO a -> StateT s m a Source #

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

Defined in Control.Monad.IO.Rerunnable

Methods

rerunnableIO :: IO a -> StateT s m a Source #

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

Defined in Control.Monad.IO.Rerunnable

Methods

rerunnableIO :: IO a -> WriterT w m a Source #

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

Defined in Control.Monad.IO.Rerunnable

Methods

rerunnableIO :: IO a -> WriterT w m a Source #

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

Defined in Control.Monad.IO.Rerunnable

Methods

rerunnableIO :: IO a -> RWST r w s m a Source #

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

Defined in Control.Monad.IO.Rerunnable

Methods

rerunnableIO :: IO a -> RWST r w s m a Source #