úÎ6\3H$      !"# $%&'()*+,-./ $&)*+,-./ $&)*+,-./non-portable (requires STM) experimentallibraries@haskell.org 0123= is an abstract type representing an unbounded FIFO channel. 4$Build and returns a new instance of  IO version of ). This is useful for creating top-level  s using  System.IO.Unsafe.unsafePerformIO, because using    inside  System.IO.Unsafe.unsafePerformIO isn't  possible. Write a value to a . Read the next value from the .  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 5 if the supplied  is empty. non-portable (requires STM) experimentallibraries@haskell.org 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. 6 Create a $ which contains the supplied value. IO version of ). This is useful for creating top-level  s using  System.IO.Unsafe.unsafePerformIO, because using    inside  System.IO.Unsafe.unsafePerformIO isn't  possible.  Create a  which is initially empty. IO version of ). This is useful for creating top-level  s using  System.IO.Unsafe.unsafePerformIO, because using    inside  System.IO.Unsafe.unsafePerformIO 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 7 if the  was empty, or 8 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  5 if it was successful, or 9 otherwise. This is a combination of  and ; ie. it takes the value  from the %, puts it back, and also returns it. Swap the contents of a  for a new value. !Check whether a given  is empty. >Notice that the boolean value returned is just a snapshot of  the state of the .. By the time you get to react on its result,  the 5 may have been filled (or emptied) - so be extremely * careful when using this operation. Use  instead if possible.  !  !  !non-portable (requires STM) experimentallibraries@haskell.org  non-portable (requires STM) experimentallibraries@haskell.org"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# #  ##non-portable (requires STM) experimentallibraries@haskell.org$  !"#<               !"#$%&'()*+,-./  0123456!787945:;<=-> stm-2.1.2.2Control.Concurrent.STM.TVarControl.Monad.STMControl.Concurrent.STM.TChanControl.Concurrent.STM.TMVarControl.Concurrent.STM.TArrayControl.Sequential.STMControl.Concurrent.STMbase GHC.Conc.IO registerDelay GHC.Conc.Sync writeTVarreadTVar readTVarIO newTVarIOnewTVaralwaysalwaysSucceedscatchSTMorElseretry atomicallySTMTVarTChannewTChan newTChanIO writeTChan readTChandupTChan unGetTChan isEmptyTChanTMVarnewTMVar newTMVarIO newEmptyTMVarnewEmptyTMVarIO takeTMVar tryTakeTMVarputTMVar tryPutTMVar readTMVar swapTMVar isEmptyTMVarTArraycheckunSTMTListTConsTNilTVarListghc-prim GHC.TypesTrue Data.MaybeNothingJustFalse array-0.3.0.3Data.Array.BaseMArray