ivar-simple-0.2: Write once concurrency primitives.

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

Data.IVar.Simple

Description

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.

Synopsis

Documentation

data IVar a Source

A write-once (immutable) Variable

new :: IO (IVar a)Source

Creates 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 there is no value yet.

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

Try to read an IVar. Returns Nothing if there is not value yet.

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

Writes a value to an IVar. Raises a NonTermination exception if it fails.

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

Writes a value to an IVar. Returns True if successful.