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

Test.IOSpec.MVar

Contents

Description

A pure specification of basic operations on MVars.

Synopsis

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.

Instances

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.