Control.Monad.IO.Class

transformers-0.3.0.0: Concrete functor and monad transformers

Portability | portable
Stability | experimental
Maintainer | ross@soi.city.ac.uk
Safe Haskell | Safe-Inferred

Control.Monad.IO.Class

Description

Class of monads based on `IO`.

Synopsis

- class Monad m => MonadIO m where
  - liftIO :: IO a -> m a

# Documentation

class Monad m => MonadIO m where

Monads in which `IO` computations may be embedded. Any monad built by applying a sequence of monad transformers to the `IO` monad will be an instance of this class.

Instances should satisfy the following laws, which state that `liftIO` is a transformer of monads:

-     liftIO . return = return

-     liftIO (m >>= f) = liftIO m >>= (liftIO . f)

Methods

liftIO :: IO a -> m a

Lift a computation from the `IO` monad.

Instances

MonadIO IO |
MonadIO m => MonadIO (IdentityT m) |
MonadIO m => MonadIO (ListT m) |
MonadIO m => MonadIO (MaybeT m) |
MonadIO m => MonadIO (ContT r m) |
(Error e, MonadIO m) => MonadIO (ErrorT e m) |
MonadIO m => MonadIO (ReaderT r m) |
MonadIO m => MonadIO (StateT s m) |
MonadIO m => MonadIO (StateT s m) |
(Monoid w, MonadIO m) => MonadIO (WriterT w m) |
(Monoid w, MonadIO m) => MonadIO (WriterT w m) |
(Monoid w, MonadIO m) => MonadIO (RWST r w s m) |
(Monoid w, MonadIO m) => MonadIO (RWST r w s m) |