lifted-base-0.1.0.1: lifted IO operations from the base library

Stabilityexperimental
MaintainerBas van Dijk <v.dijk.bas@gmail.com>

Control.Concurrent.MVar.Lifted

Description

This is a wrapped version of Control.Concurrent.MVar with types generalized from IO to all monads in either MonadBase or MonadBaseControl.

Synopsis

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.

Instances

newEmptyMVar :: MonadBase IO m => m (MVar α)Source

Generalized version of newEmptyMVar.

newMVar :: MonadBase IO m => α -> m (MVar α)Source

Generalized version of newMVar.

takeMVar :: MonadBase IO m => MVar α -> m αSource

Generalized version of takeMVar.

putMVar :: MonadBase IO m => MVar α -> α -> m ()Source

Generalized version of putMVar.

readMVar :: MonadBase IO m => MVar α -> m αSource

Generalized version of readMVar.

swapMVar :: MonadBase IO m => MVar α -> α -> m αSource

Generalized version of swapMVar.

tryTakeMVar :: MonadBase IO m => MVar α -> m (Maybe α)Source

Generalized version of tryTakeMVar.

tryPutMVar :: MonadBase IO m => MVar α -> α -> m BoolSource

Generalized version of tryPutMVar.

isEmptyMVar :: MonadBase IO m => MVar α -> m BoolSource

Generalized version of isEmptyMVar.

withMVar :: MonadBaseControl IO m => MVar α -> (α -> m β) -> m βSource

Generalized version of withMVar.

modifyMVar_ :: (MonadBaseControl IO m, MonadBase IO m) => MVar α -> (α -> m α) -> m ()Source

Generalized version of modifyMVar_.

modifyMVar :: (MonadBaseControl IO m, MonadBase IO m) => MVar α -> (α -> m (α, β)) -> m βSource

Generalized version of modifyMVar.

addMVarFinalizer :: MonadBaseControl IO m => MVar α -> m () -> m ()Source

Generalized version of addMVarFinalizer.

Note any monadic side effects in m of the "finalizer" computation are discarded.