ivar-simple-0.3: Write once concurrency primitives.

MaintainerBertram Felgenhauer <int-e@gmx.de>
Safe HaskellSafe-Infered



IVars are write-once variables.

Similarily to MVars, IVars can be either empty or filled. Once filled, they keep their value indefinitely - they are immutable.

Reading from an empty IVar will block until the IVar is filled. Because the value read will never change, this is a pure computation.



data IVar a Source

A write-once (immutable) Variable

new :: IO (IVar a)Source

Create a new, empty IVar.

newFull :: a -> IO (IVar a)Source

Create a new filled IVar.

This is slightly cheaper than creating a new IVar and then writing to it.

read :: IVar a -> aSource

Returns the value of an IVar.

The evaluation will block until a value is written to the IVar if it has no value yet.

tryRead :: IVar a -> IO (Maybe a)Source

Try to read an IVar. Returns Nothing if it has no value yet.

write :: IVar a -> a -> IO ()Source

Writes a value to an IVar. Raises a BlockedIndefinitelyOnIVar exception if the variable already has a value.

tryWrite :: IVar a -> a -> IO BoolSource

Writes a value to an IVar. Returns True if successful, and False otherwise.