úÎ:-6å,      !"#$%&'()*+ Trustworthy ,-./012345678 ,-./012345 ,-./012345678non-portable (requires STM) experimentallibraries@haskell.org Trustworthy = is an abstract type representing an unbounded FIFO channel. $Build and returns a new instance of  IO version of ). This is useful for creating top-level  s using , because using    inside  isn't  possible. Write a value to a . Read the next value from the .  A version of " which does not retry. Instead it  returns Nothing if no value is available. Get the next value from the TChan without removing it, # retrying if the channel is empty.  A version of " which does not retry. Instead it  returns Nothing if no value is available.  Duplicate a :: the duplicate channel begins empty, but data written to N either channel from then on will be available from both. Hence this creates F a kind of broadcast channel, where data written by anyone is seen by  everyone else. JPut a data item back onto a channel, where it will be the next item read. Returns 9 if the supplied  is empty.    non-portable (requires STM) experimentallibraries@haskell.org Trustworthy A # is a synchronising variable, used Dfor communication between concurrent threads. It can be thought of &as a box, which may be empty or full.  Create a $ which contains the supplied value. IO version of ). This is useful for creating top-level  s using , because using    inside  isn't  possible.  Create a  which is initially empty. IO version of ). This is useful for creating top-level  s using , because using    inside  isn't  possible. Return the contents of the  . If the  is currently  empty, the transaction will   . After a ,  the  is left empty.  A version of  that does not  . The    function returns : if the  was empty, or ; a if  the  was full with contents a . After  , the   is left empty. !Put a value into a  . If the  is currently full,  ! will  . " A version of ! that does not  . The " $ function attempts to put the value a into the  , returning  9 if it was successful, or < otherwise. #This is a combination of  and ! ; ie. it  takes the value from the !, puts it back, and also returns  it. $ A version of #" which does not retry. Instead it  returns Nothing if no value is available. %Swap the contents of a  for a new value. &Check whether a given  is empty.  !"#$%&  !"#$%& !#$% "&  !"#$%&non-portable (requires STM) experimentallibraries@haskell.org Trustworthy'Mutate the contents of a . N.B., this version is  non-strict. (Strict version of '. )Swap the contents of a  for a new value. '() '() '()'()non-portable (requires STM) experimentallibraries@haskell.org Trustworthy*6TArray is a transactional array, supporting the usual =  interface for mutable arrays. It is currently implemented as Array ix (TVar e), I but it may be replaced by a more efficient implementation in the future 0 (the interface will remain the same, however). *>***>non-portable (requires STM) experimentallibraries@haskell.org Trustworthy+?  +  + +? non-portable (requires STM) experimentallibraries@haskell.org Trustworthy,  !"#$%&'()*+@               !"#$%&'()*+,-./0123456789:;<=> ?@ ?A<=BCDEFGHstm-2.3Control.Concurrent.STM.TVarControl.Monad.STMControl.Concurrent.STM.TChanControl.Concurrent.STM.TMVarControl.Concurrent.STM.TArrayControl.Sequential.STMSystem.IO.UnsafeunsafePerformIOControl.Concurrent.STMbase GHC.Conc.IO registerDelay GHC.Conc.Sync writeTVarreadTVar readTVarIO newTVarIOnewTVaralwaysalwaysSucceedscatchSTMthrowSTMorElseretry atomicallySTMTVarTChannewTChan newTChanIO writeTChan readTChan tryReadTChan peekTChan tryPeekTChandupTChan unGetTChan isEmptyTChanTMVarnewTMVar newTMVarIO newEmptyTMVarnewEmptyTMVarIO takeTMVar tryTakeTMVarputTMVar tryPutTMVar readTMVar tryReadTMVar swapTMVar isEmptyTMVar modifyTVar modifyTVar'swapTVarTArraycheck $fMonadSTM$fApplicativeSTM $fFunctorSTMghc-prim GHC.TypesTrue Data.MaybeNothingJustFalse array-0.4.0.0Data.Array.BaseMArray$fMArrayTArrayeSTM $fMonadFixSTM