TD        !"#$%&'()*+,-./0123456789:;)*+,-./01245679:;)*+,-./01245679:;<=>?@A<=>?@A<=>?@AL0 is the abstract exception type which is thrown ! by the DSTM library when either readTVar or  writeTVar is called on an  unreachable TVar. F A TVar becomes unreachable when the process hosting the TVar becomes  unreachable. J An atomic transaction using a TVar which becomes unreachable during the  execution of atomic8 may either execute completely (without the unreachable K TVar(s)) or execute not at all depending on transaction states. In either  case an exception of type  is raised. BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~%BCDLMNOPQRSTUVWZ[\_`abeglm}%DCBBCDL WVUTSRQPONMMNOPQRSTUVWZ[[\_`abeglm}    The class & defines the distribution property of TVar values. Any ! TVar value must implement class #. All basic data types exported by  the Prelude are instances of , and  may be derived for any data / type whose constituents are also instances of . Any custom-typed TVar  value type should implement  and  to do nothing and  return '()'.  Note that  and + should never be called by the application  itself! Do not call regTVars yourself! $regTVars registers all TVars within a% with a host TVar link count before  the TVars in a are sent to remote nodes Do not call finTVars yourself! 2finTVars installs finalizers at all link TVars in a which send messages L to their host TVars to remove them from the host TVar link count after the ( link TVars have been garbage collected NIShared memory locations that support atomic memory transactions. Between K different nodes memory is shared using transparent process communication.  (TVars are called  host TVars, when they reside on the process where they  have been created by calling newTVar. They are called  link TVars on  other processes)  e tVar checks whether tVar is unreachable when  exception e had been raised. It returns  if the exception raised  denotes tVar as unreachable,  otherwise. A TVar returning   once will never return a  check result. 22 DThe default name server for the process running the main function.  Usually it is  localhost.  server tVar name registers tVar with name onto server    server name removes name from server    server name returns ( tVar) if a tVar registration  of name exists on server,  otherwise.    .A monad supporting atomic memory transactions              )*+,-./01245679:;  A +Create a new TVar holding a value supplied *Return the current value stored in a TVar %Write the supplied value into a TVar +Perform a series of STM actions atomically GRetry execution of the current memory transaction because it has seen H values in TVars which mean that it should not continue (e.g. the TVars L represent a shared buffer that is now empty). The implementation may block K the thread until one of the TVars that it has read from has been udpated. KCompose two alternative STM actions. If the first action completes without J retrying then it forms the result of the orElse. Otherwise, if the first G action retries, then the second action is tried in its place. If both 2 actions retry then the orElse as a whole retries (Throw an exception within an STM action &Exception handling within STM actions  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG@ enables inter process communication and exception handling and ( then executes the given main function 5application main function to be executed. Each main 6 function in the distributed system has to be wrapped  in a  call H    I         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQQRSTUVWXYZ[\]^_`abcdeeffghijklmnopqrstuvwxyz{|}~                           !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM DSTM-0.1.1Control.Distributed.STM.DSTM Paths_DSTM!Control.Distributed.STM.DebugBaseControl.Distributed.STM.UtilsControl.Distributed.STM.EnvAddr Control.Distributed.STM.RetryVarControl.Distributed.STM.DistControl.Distributed.STM.TVar#Control.Distributed.STM.NameServiceControl.Distributed.STM.STM!Control.Distributed.STM.DebugDSTMSomeDistTVarExceptionDistregTVarsfinTVarsTVar isDistErrTVargDefaultNameServer nameService registerTVarderegisterTVar lookupTVarSTMnewTVarreadTVar writeTVaratomicretryorElsethrowcatch startDistversionbindirlibdirdatadir libexecdir getBinDir getLibDir getDataDir getLibexecDirgetDataFileNamedebug0debug1debug2debug3debug4debug5debug6debug7debug8debug9 debugStrLn0 debugStrLn1 debugStrLn2 debugStrLn3 debugStrLn4 debugStrLn5 debugStrLn6 debugStrLn7 debugStrLn8 debugStrLn9gDebug gDebugLock gDebugStrLn startGDebug stopGDebug gMVarStates newDebugMVar inspectMVars timedInspect>>++>> insertWithreplaceListElemsupdateListElems showJustifyNodeConnectionFailCommunicationFailPropagateDistTVarFailTCPStatconEnv conExclEnv conRetryVarconNS STMMsgStat RemMsgIdxRDTDRPLFCDEAAEARESENCCTTSTTINVATM TCPRecConn TCPSndConnVarLinkEnvAddrIPAddr VersionIDVarIDSTMIDIDgInitID gFreshIdsuniqueId freeGlobalIdgNameServerPort gServerPort freshPort gMyIpAddrgMyPort gMySocketgMyEnv nameServerEnv gTCPSndConnlookupTCPSndEnv lookupSndEnvconnectToEnvHold' gTCPRecConngTCPTotalRecConnlookupTCPRecEnv lookupRecEnvconnectAtomicToEnv' freeTcpHandleallocTcpHandle connectToEnv'connectToNameServer' gSTMMsgStataStatgTCPStatconnectToEnvHoldconnectAtomicToEnvconnectToRetryEnvconnectToNameServer printTCPStat printStat printMsgsprintMsgformEx propagateEx distTVarExEnv gSendLocksendTCPrecvTCPRetryVarActionRetryLogBundleRetryLogRetryVar LinkRetryVar newRetryVarsuspendresumeRetryVarActbundledRetryLogssingletonRetryLog updRetryLog retryVarEnvgRetryVarActionMapprintGRetryVarActionMapinsertRetryVarActiondeleteRetryVarAction resumeFromIdremPutRetryEnvLinereg2reg3reg4fin2fin3fin4 STMMessageRemElectedNewCoord RemContTrans RemStartTrans RemReadTVar RemLifeCheckRemDelEnvFromActionRemAddEnvToAction RemResumeRemContErrEndRetComTransID TVarActionsremReadremWrite remReadVal remSwapVal remValidateremLock remUnLock remExtWaitQ remNotifyRegIO CommitRemVal CommitActs commitAct notifyActCommitLogBundle CommitLog MaybeReadMaybeReadWrite ValidRemVal ValidActsvalidAct extWaitQActLockActslockAct unLockActValidLogBundleValidLogLinkTVartVarEnv tVarToLinkbundledValidLogssingletonValidLog updValidLog mergeRValbundledCommitLogssingletonCommitLog updCommitgTVarActionMapinsertTVarActions coreNotifyaddEnvToTVarActionsdelEnvFromTVarActionsreadTVarFromIdwriteTVarFromIdreadTVarValFromIdswapTVarValFromIdlockTVarFromIdunLockTVarFromIdvalidateTVarFromIdextWaitQFromId notifyFromIddistInstanceError remPutMsg remGetMsg finalizeTVarghc-primGHC.BoolTrueFalseTVarDict NameServerMsgNameServerLookupNameServerUnReg NameServerRegNameServerPingputNameServerLngetNameServerLnreadNameServerMsghandleNameServerMsgbase Data.MaybeJustNothing STMResult ExceptionSuccessRetrySTMStatestmId stmRetryVarstmValid stmCommitrunSTM printValid printRemValprintValidFromIdprocprintStatisticsLinkAutoLink autoTrans autoRetry DistTransContgInitVersionIDreadIntraTransTVar coreReadTVarreadHost initialStategatherStmStategatherValidRemValaddCommitRemVals startTransrobustFoldValidAct doValidAction commitTransdoCommitAction retryTrans doRetryAction unRetryTransdoUnRetryActionendTrans doEndAction robustMapM_gDistTransCont startRemTrans contRemTrans ctrlTrans ctrlContTrans ctrlEndTrans finishTranselectNewTransCoordinatorcontTransWNewCoordvalidateValidIds contWriteTVar contExtWaitQ nodeReceiverreadMsg handleMsg gDefaultLinkgLinks gTransChkIntv gRetryChkIntv gMegaMuSecupdateAutoTransinsertRetryLinksinsertRetryLinkdeleteRetryLinksdeleteRetryLink lifeCheckrecoverBrokenReactiveTransrecoverBrokenInactiveTrans coreResumestartNameService