úÎ ±eN      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM(c) 2010 Galois, Inc./BSD-style (see the file libraries/base/LICENSE) John Launchbury, john@galois.com experimental concurrencySafe]!KIncluded to maintain name-for-name compatibility with Control.Concurrent  !"#$%&  !"#$%&(c) 2010 Galois, Inc./BSD-style (see the file libraries/base/LICENSE) John Launchbury, john@galois.com experimentalconcurrency, requires STMNone](xThe atomically function allows STM to be called directly from any monad which contains IO, i.e. is a member of MonadIO.--n is an atomic update operation which provides both the former value and the newly computed value as a result.' ()*+,-./0123456789:;<=>?@ABCDE' (  )*+,-./0123456789:;<=>?@ABCDE(c) 2010 Galois, Inc./BSD-style (see the file libraries/base/LICENSE) John Launchbury, john@galois.com experimental concurrencyNoneFF establishes the context for Gk, by running a daemon while its argument is executing. The daemon is terminated once the argument to F finishes.GGÿ is the main user level function of the module. The function prints its argument on stdout, prefixed by its process number. The user similarly selects the recipient by prefixing the process number, e.g. "23:". Active prompts will reprompt when !! is entered. HHh sends output to stdout, ensuring that lines are whole and uninterrupted (including the final newline).FGHFGH(c) 2010 Galois, Inc./BSD-style (see the file libraries/base/LICENSE) John Launchbury, john@galois.com experimentalIOSafe IJKLM IJKLMN           !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\&monadIO-0.11.0.0-v3p3oFkpvLGIXqTdcHjtgControl.Concurrent.MonadIOControl.Concurrent.STM.MonadIOData.IORef.MonadIOControl.Concurrent.StdInOutbaseControl.Concurrent.ChanChanControl.Monad.IO.ClassliftIOMonadIO GHC.Conc.SyncalwaysalwaysSucceedscatchSTMorElseretryThreadIdSTMTVar GHC.IORefIORefGHC.MVarMVar"stm-2.4.4.1-6AExGOUG8NB2Rzejnay0wwControl.Monad.STMcheckControl.Concurrent.STM.TMVarTMVarHasForkfork newEmptyMVarnewMVartakeMVarputMVarreadMVarswapMVar tryTakeMVar tryPutMVar isEmptyMVarnewChan writeChanreadChandupChan unGetChangetChanContentswriteList2ChanforkIO myThreadId killThreadthrowToyield threadDelay $fHasForkIO atomicallynewTVarreadTVar writeTVar registerDelay modifyTVar modifyTVar_ newTVarSTM readTVarSTM writeTVarSTMnewTMVar newEmptyTMVar takeTMVarputTMVar readTMVar swapTMVar tryTakeTMVar tryPutTMVar isEmptyTMVar modifyTMVar modifyTMVar_ newTMVarSTMnewEmptyTMVarSTM takeTMVarSTM putTMVarSTM readTMVarSTM swapTMVarSTMtryTakeTMVarSTMtryPutTMVarSTMisEmptyTMVarSTM setupStdInOutprompt putStrLinenewIORef readIORef writeIORef modifyIORefatomicModifyIORef