IVar
s are write-once variables.
Similarily to MVar
s, IVar
s 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.