úÎûpresumably portable experimental Luke Palmer <lrpalmer@gmail.com>:Reader is a functor (also monad) for reading IVars. This < provides composability when blocking on the first of a set : of IVars, as you can block on several IVars of different  types. >The MonadPlus and Monoid instances for Reader are equivalent. < It tries the left action ; if it blocks, then it tries the  right action ; if it& blocks, then the whole action blocks $ until one of the two is available.  A write-once variable. Create a new empty IVar. =Write a value to an IVar. If the IVar already has a value,  throws an error "!Attempt to write to an IVar twice". Read an IVar into the  functor. Pass this to   or  to extract the value. #Run a reader nonblocking. Returns Just x if a value x is  available, Nothing otherwise. 7Block on a reader. Returns the value as soon as it is  available.       data-ivar-0.11 Data.IVarReaderIVarnewwriteread nonblockingblocking runReaderLogEntryStateNoValueValue addAction deleteAction