h&?@4[      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                                            Safe-Inferred io-classesEmits a message to the eventlog, if eventlog profiling is available and enabled at runtime. io-classesEmits a marker to the eventlog, if eventlog profiling is available and enabled at runtime.The  is the name of the marker. The name is just used in the profiling tools to help you keep clear which marker is which. Safe-Inferred  io-classes%Apply the label to the current thread   Safe-Inferred $ io-classes#This class is for abstracting over  which allows running  actions in &. In this case it is to allow running  actions within another monad m. The type of  is: stToIO : ST RealWorld a -> IO aAbstracting over this is tricky because we need to not care about both the IO, and also the  RealWorld.3A solution is to write an action that is given the liftST as an argument and where that action itself is polymorphic in the s3 parameter. This allows us to instantiate it with  RealWorld in the IO case, and the local s/ in a case where we are embedding into another ST action.$%$% Safe-Inferred E)*)* Safe-Inferred &- io-classesA helper monad for IOSimPOR.. io-classesmark a thread for schedule exploration. All threads that are forked by it are also included in the exploration.-.-. Safe-Inferred 58<8 1 io-classesMonads which can 2.7 io-classesSupport for safely working in the presence of asynchronous exceptions.:This is typically not needed directly as the utilities in L and B cover most use cases.< io-classesUsed in KSee  exceptions' package for discussion and motivation.@ io-classesThe default handler type for Q , whcih is a generalisation of .B io-classesCatching exceptions.3Covers standard utilities to respond to exceptions.K io-classesGeneral form of bracketSee  http://hackage.haskell.org/package/exceptions-0.10.0/docs/Control-Monad-Catch.html#v:generalBracket for discussion and motivation.L io-classesThrowing exceptions, and resource handling in the presence of exceptions.6Does not include the ability to respond to exceptions.Q io-classesLike Q but for B rather than only . io-classesUsed in the default Q implementation.*  12345678:9;<=>?@ABCEIJDGHFKLNMPOQ*LNMPOBCEIJDGHFK78:9;345612  <=>?@AQ  Safe-Inferred ')*15 TraceString . show)  Note that the interpretation of w depends on the monad m itself (see w).w io-classes4A GADT which instructs how to trace the value. The y will use dynamic tracing, e.g. "Control.Monad.IOSim.traceM"; while z will be traced with EventSay. The IOSims dynamic tracing allows to recover the value from the simulation trace (see "Control.Monad.IOSim.selectTraceEventsDynamic").{ io-classes!This type class is indented for  *https://hackage.haskell.org/package/io-sim'io-sim'$, where one might want to access a  in the underlying ST monad.} io-classesReturn the value of a  as an | computation.} is useful if the value of a  observed by m contains other s.~ io-classesReturn the value of a  as an | computation. io-classes Labelled  s & friends.The  instances is no-op, the IOSim instance enhances simulation trace. This is very useful when analysing low lever concurrency issues (e.g. deadlocks, livelocks etc). io-classesName a . io-classes+The STM primitives parametrised by a monad m. io-classesThe STM monad. io-classes A type of a .See . io-classes"Atomically run an STM computation.See . io-classesSee . io-classesSee . io-classes@since io-classes-0.2.0.0 io-classesSee . io-classes io-classesDo not trace the value. io-classesUse only string tracing. io-classesUse only a dynamic tracer. io-classes specialised to stm monad. io-classes specialized for an stm monad. io-classes-The underlying stm monad is also transformed. io-classes noop instance io-classes noop instancem io-classes)callback which receives initial value or  (if it is a newly created ), and the committed value.`abcdefghijklpunsotqvmrwxyz{|}~{|}~wxyzlpunsotqvmrjkhifgdebc`a  Safe-Inferred )*1?lpunsotqvmrwxyz{|}~!lpunsotqvmrwxyz{|}~  Safe-Inferredmmrmr Safe-Inferred qv qv Safe-Inferred otot Safe-Inferred unsns Safe-Inferred  Safe-Inferred!=pupu Safe-Inferred! Safe-Inferred!lrmvqtosnpuwzyx{~|}|  Safe-Inferred  <% io-classes!This type class is intended for  *https://hackage.haskell.org/package/io-sim'io-sim'%, where one might want to access an  in the underlying ST monad. io-classesReturn the value of an  as an  computation. Can be  if the  is empty. io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . Safe-Inferred&g Safe-Inferred;' io-classesWall clock time. io-classesTime in a monotonic clock, with high precision. The epoch for this clock is arbitrary and does not correspond to any wall clock or calendar.-The time is measured in nano seconds as does  from "base".    Safe-Inferred <)< io-classes$A typeclass providing utilities for timeouts. io-classesSee . io-classesSee . io-classes$A typeclass to delay current thread. io-classesSuspends the current thread for a given number of microseconds (GHC only).See . Safe-Inferred )*1<3k7 io-classes6Exception from child thread re-raised in parent thread1We record the thread ID of the child thread as a . This avoids an m, parameter in the type, which is important:  must be an instance of  , requiring it to be Typeable; if m) appeared in the type, we would require m to be Typeable, which does not work with with the simulator, as it would require a Typeable constraint on the s parameter of IOSim. io-classes Similar to  but which works for any  instance. io-classesAn asynchronous actionSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesNote, IO-based implementations should override the default implementation. See the async' package implementation and comments. http://hackage.haskell.org/package/async-2.2.1/docs/src/Control.Concurrent.Async.html#waitEitherCatchSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesSee . io-classesLike . io-classesLike . io-classesLike . io-classesLike . io-classesA higher order version of << !"!#!$!%!&'()'(*'+,'-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_``abcdefghijklmnopqrstuvwxyz{|}~                                                                                                                                                                                                                         ` lb)io-classes-1.3.0.0-2f44lH2XnEg7Q298A9TSuIControl.Monad.Class.MonadAsyncControl.Monad.Class.MonadThrowControl.Monad.Class.MonadTime!Control.Monad.Class.MonadEventlogControl.Monad.Class.MonadForkControl.Monad.Class.MonadSTControl.Monad.Class.MonadSayControl.Monad.Class.MonadTest%Control.Monad.Class.MonadSTM.Internal"Control.Concurrent.Class.MonadMVarControl.Monad.Class.MonadTimerControl.Monad.Class.MonadSTM&Control.Concurrent.Class.MonadSTM.TVar&Control.Concurrent.Class.MonadSTM.TSem(Control.Concurrent.Class.MonadSTM.TQueue'Control.Concurrent.Class.MonadSTM.TMVar'Control.Concurrent.Class.MonadSTM.TChan)Control.Concurrent.Class.MonadSTM.TBQueue(Control.Concurrent.Class.MonadSTM.TArray!Control.Concurrent.Class.MonadSTMControl.Monad.Class.MonadMVar Data.Functionon"async-2.2.4-JCLnoySkSnuKPKPCvztdzRControl.Concurrent.AsyncAsyncCancelledbaseGHC.IOUnmaskedMaskedUninterruptibleMaskedInterruptible MaskingStateGHC.Exception.Type toException fromExceptiondisplayException Exception SomeException time-1.11.1.1 Data.Time.Clock.Internal.UTCDiff diffUTCTime addUTCTime Data.Time.Clock.Internal.UTCTimeUTCTime(Data.Time.Clock.Internal.NominalDiffTimeNominalDiffTime MonadEventlog traceEventIO traceMarkerIO$fMonadEventlogReaderT$fMonadEventlogIO MonadForkforkIOforkOnforkIOWithUnmaskthrowTo killThreadyield MonadThreadThreadId myThreadId labelThreadlabelThisThread$fMonadThreadReaderT$fMonadThreadIO$fMonadForkReaderT $fMonadForkIOMonadST withLiftST$fMonadSTReaderT $fMonadSTST $fMonadSTIOMonadSaysay$fMonadSayReaderT $fMonadSayIO MonadTest exploreRaces$fMonadTestReaderT $fMonadTestIO MonadEvaluateevaluateMonadMaskingStategetMaskingState interruptibleallowInterrupt MonadMaskmaskuninterruptibleMaskmask_uninterruptibleMask_ExitCaseExitCaseSuccessExitCaseException ExitCaseAbortHandler MonadCatchcatch catchJusttrytryJusthandle handleJust onExceptionbracketOnErrorgeneralBracket MonadThrowthrowIObracketbracket_finallycatches$fMonadMaskReaderT$fMonadCatchReaderT$fMonadThrowReaderT$fMonadCatchSTM$fMonadThrowSTM $fMonadMaskIO$fMonadCatchIO$fMonadThrowIO$fMonadMaskingStateIO$fMonadEvaluateReaderT$fMonadEvaluateIO$fShowExitCase$fFunctorExitCase$fFunctorHandler TChanDefaultTChan TSemDefaultTSem TArrayDefaultTArrayTBQueueDefaultTBQueue TQueueDefaultTQueue TMVarDefaultTMVar MonadTraceSTM traceTVar traceTMVar traceTQueue traceTBQueue traceTSem traceTVarIO traceTMVarIO traceTQueueIOtraceTBQueueIO traceTSemIO TraceValue traceDynamic traceStringMonadInspectSTM InspectMonad inspectTVar inspectTMVarMonadLabelledSTM labelTVar labelTMVar labelTQueue labelTBQueue labelTArray labelTSem labelTChan labelTVarIO labelTMVarIO labelTQueueIOlabelTBQueueIO labelTArrayIO labelTSemIO labelTChanIOMonadSTMSTMTVar atomicallynewTVarreadTVar writeTVarretryorElse modifyTVar modifyTVar' stateTVarswapTVarchecknewTMVar newEmptyTMVar takeTMVar tryTakeTMVarputTMVar tryPutTMVar readTMVar tryReadTMVar swapTMVar isEmptyTMVar newTQueue readTQueue tryReadTQueue peekTQueue tryPeekTQueue flushTQueue writeTQueue isEmptyTQueue unGetTQueue newTBQueue readTBQueuetryReadTBQueue peekTBQueuetryPeekTBQueue flushTBQueue writeTBQueue lengthTBQueueisEmptyTBQueue isFullTBQueue unGetTBQueuenewTSemwaitTSem signalTSem signalTSemNnewTChannewBroadcastTChandupTChan cloneTChan readTChan tryReadTChan peekTChan tryPeekTChan writeTChan unGetTChan isEmptyTChan newTVarIO readTVarIO newTMVarIOnewEmptyTMVarIO newTQueueIO newTBQueueIO newTChanIOnewBroadcastTChanIO DontTrace TraceString TraceDynamiclabelTMVarDefaulttraceTMVarDefaultnewTMVarDefaultnewEmptyTMVarDefaulttakeTMVarDefaulttryTakeTMVarDefaultputTMVarDefaulttryPutTMVarDefaultreadTMVarDefaulttryReadTMVarDefaultswapTMVarDefaultisEmptyTMVarDefaultlabelTQueueDefaultnewTQueueDefaultwriteTQueueDefaultreadTQueueDefaulttryReadTQueueDefaultisEmptyTQueueDefaultpeekTQueueDefaulttryPeekTQueueDefaultflushTQueueDefaultunGetTQueueDefaultlabelTBQueueDefaultnewTBQueueDefaultreadTBQueueDefaulttryReadTBQueueDefaultpeekTBQueueDefaulttryPeekTBQueueDefaultwriteTBQueueDefaultisEmptyTBQueueDefaultisFullTBQueueDefaultlengthTBQueueDefaultflushTBQueueDefaultunGetTBQueueDefaultlabelTSemDefaultnewTSemDefaultwaitTSemDefaultsignalTSemDefaultsignalTSemNDefaultlabelTChanDefaultnewTChanDefaultnewBroadcastTChanDefaultwriteTChanDefaultreadTChanDefaulttryReadTChanDefaultpeekTChanDefaulttryPeekTChanDefaultdupTChanDefaultunGetTChanDefaultisEmptyTChanDefaultcloneTChanDefaultthrowSTMcatchSTM$fMonadSTMReaderT $fMonadSTMIO$fMonadInspectSTMIO$fExceptionBlockedIndefinitely$fMArrayTArrayDefaultestm$fMonadTraceSTMIO$fMonadLabelledSTMIO$fShowBlockedIndefinitely$fEqTArrayDefaultMonadInspectMVarInspectMVarMonad inspectMVar MonadMVarMVar newEmptyMVartakeMVarputMVar tryTakeMVar tryPutMVar isEmptyMVarnewMVarreadMVar tryReadMVarswapMVarwithMVarwithMVarMasked modifyMVar_ modifyMVarmodifyMVarMasked_modifyMVarMasked $fMonadMVarIO$fMonadMVarReaderT$fMonadInspectMVarIO MonadTimegetCurrentTimeMonadMonotonicTimeNSecgetMonotonicTimeNSec$fMonadMonotonicTimeNSecReaderT$fMonadMonotonicTimeNSecIO$fMonadTimeReaderT $fMonadTimeIO MonadTimer registerDelaytimeout MonadDelay threadDelay$fMonadDelayReaderT$fMonadDelayIO$fMonadTimerReaderT$fMonadTimerIOExceptionInLinkedThread ConcurrentlyrunConcurrently MonadAsyncAsyncasync asyncBoundasyncOn asyncThreadId withAsyncwithAsyncBound withAsyncOnwaitSTMpollSTM waitCatchSTM waitAnySTMwaitAnyCatchSTM waitEitherSTMwaitEitherSTM_waitEitherCatchSTM waitBothSTMwaitpoll waitCatchcancel cancelWithuninterruptibleCancelwaitAny waitAnyCatch waitAnyCancelwaitAnyCatchCancel waitEitherwaitEitherCatchwaitEitherCancelwaitEitherCatchCancel waitEither_waitBothracerace_ concurrently concurrently_asyncWithUnmaskasyncOnWithUnmaskwithAsyncWithUnmaskwithAsyncOnWithUnmask compareAsyncsmapConcurrentlyforConcurrentlymapConcurrently_forConcurrently_replicateConcurrentlyreplicateConcurrently_linklinkOnlylink2 link2Only$fMonadAsyncIO$fMonoidConcurrently$fSemigroupConcurrently$fAlternativeConcurrently$fApplicativeConcurrently$fFunctorConcurrently"$fExceptionExceptionInLinkedThread$fShowExceptionInLinkedThread$fMonadAsyncReaderTGHC.BaseStringstToIOGHC.STSTghc-prim GHC.TypesIOControl.ExceptioncatchesHandlerBlockedIndefinitelyGHC.IO.ExceptionBlockedIndefinitelyOnSTM GHC.Conc.Sync stm-2.5.0.2Control.Monad.STM GHC.MaybeNothingGHC.MVarControl.Concurrent.MVar GHC.Conc.IOSystem.Timeout