Control.Monad.MVar
Description
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
- class MonadIO m => MonadMVar m where
- modifyMVar :: MVar a -> (a -> m (a, b)) -> m b
- addMVarFinalizer :: MVar a -> m () -> m ()
- modifyMVar_ :: MonadMVar m => MVar a -> (a -> m a) -> m ()
- withMVar :: MonadMVar m => MVar a -> (a -> m b) -> m b
- liftIO :: MonadIO m => forall a. IO a -> m a
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
class MonadIO m => MonadMVar m whereSource
Methods
modifyMVar :: MVar a -> (a -> m (a, b)) -> m bSource
addMVarFinalizer :: MVar a -> m () -> m ()Source
modifyMVar_ :: MonadMVar m => MVar a -> (a -> m a) -> m ()Source