ivar-simple-0.3.2: Write once concurrency primitives.

Copyright(c) 2008-2015 Bertram Felgenhauer
MaintainerBertram Felgenhauer <int-e@gmx.de>
Safe HaskellNone



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


Eq (IVar a) Source 

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 -> a Source

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 Bool Source

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