IOSpec-0.2: A pure specification of the IO monad.

Safe HaskellNone




A pure specification of basic operations on MVars.


The MVarS spec

data MVarS a Source

An expression of type IOSpec MVarS a corresponds to an IO computation that uses shared, mutable variables and returns a value of type a.

By itself, MVarS is not terribly useful. You will probably want to use IOSpec (ForkS :+: MVarS).

Supported functions

data MVar a Source

An MVar is a shared, mutable variable.


newEmptyMVar :: (Typeable a, MVarS :<: f) => IOSpec f (MVar a)Source

The newEmptyMVar function creates a new MVar that is initially empty.

takeMVar :: (Typeable a, MVarS :<: f) => MVar a -> IOSpec f aSource

The takeMVar function removes the value stored in an MVar. If the MVar is empty, the thread is blocked.

putMVar :: (Typeable a, MVarS :<: f) => MVar a -> a -> IOSpec f ()Source

The putMVar function fills an MVar with a new value. If the MVar is not empty, the thread is blocked.