Lift MVar operations so you can do them within monads stacked on top of IO. Analogous to MonadIO
- data MVar a
- newEmptyMVar :: MonadIO m => m (MVar a)
- newMVar :: MonadIO m => a -> m (MVar a)
- takeMVar :: MonadIO m => MVar a -> m a
- putMVar :: MonadIO m => MVar a -> a -> m ()
- readMVar :: MonadIO m => MVar a -> m a
- swapMVar :: MonadIO m => MVar a -> a -> m a
- tryTakeMVar :: MonadIO m => MVar a -> m (Maybe a)
- tryPutMVar :: MonadIO m => MVar a -> a -> m Bool
- isEmptyMVar :: MonadIO m => MVar a -> m Bool
- modifyMVar :: MonadControlIO m => MVar a -> (a -> m (a, b)) -> m b
- addMVarFinalizer :: MonadControlIO m => MVar a -> m () -> m ()
- modifyMVar_ :: MonadControlIO m => MVar a -> (a -> m a) -> m ()
- withMVar :: MonadControlIO m => MVar a -> (a -> m b) -> m b
- liftIO :: MonadIO m => forall a. IO a -> m a
- class MonadIO m => MonadControlIO m
Documentation
data MVar a
An MVar
(pronounced "em-var") is a synchronising variable, used
for communication between concurrent threads. It can be thought of
as a a box, which may be empty or full.
newEmptyMVar :: MonadIO m => m (MVar a)Source
tryTakeMVar :: MonadIO m => MVar a -> m (Maybe a)Source
tryPutMVar :: MonadIO m => MVar a -> a -> m BoolSource
isEmptyMVar :: MonadIO m => MVar a -> m BoolSource
modifyMVar :: MonadControlIO m => MVar a -> (a -> m (a, b)) -> m bSource
addMVarFinalizer :: MonadControlIO m => MVar a -> m () -> m ()Source
modifyMVar_ :: MonadControlIO m => MVar a -> (a -> m a) -> m ()Source
withMVar :: MonadControlIO m => MVar a -> (a -> m b) -> m bSource
class MonadIO m => MonadControlIO m
MonadControlIO
is the class of IO
-based monads supporting an
extra operation liftControlIO
, enabling control operations on IO
to be
lifted into the monad.
MonadControlIO IO | |
MonadControlIO m => MonadControlIO (ListT m) | |
MonadControlIO m => MonadControlIO (MaybeT m) | |
MonadControlIO m => MonadControlIO (IdentityT m) | |
MonadControlIO m => MonadControlIO (Action m) | |
MonadControlIO m => MonadControlIO (StateT s m) | |
(Error e, MonadControlIO m) => MonadControlIO (ErrorT e m) | |
MonadControlIO m => MonadControlIO (ReaderT r m) | |
MonadControlIO m => MonadControlIO (StateT s m) | |
(Monoid w, MonadControlIO m) => MonadControlIO (WriterT w m) | |
(Monoid w, MonadControlIO m) => MonadControlIO (WriterT w m) | |
(Monoid w, MonadControlIO m) => MonadControlIO (RWST r w s m) | |
(Monoid w, MonadControlIO m) => MonadControlIO (RWST r w s m) |