h*A6      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                                                1.5.0.0 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  9  io-classes%Apply the label to the current thread     Safe-Inferred3% 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 normal type of & is:  stToIO :: ST RealWorld a -> IO aWe have two approaches to abstracting over this, a new and an older (deprecated) method. The new method borrows the  primitive package's  and  type family. This gives us: #stToIO :: ST (PrimState m) a -> m a Which for # is exactly the same as above. For  it is identity, while for IOSim it is stToIO :: ST s a -> IOSim s aThe older (deprecated) method is tricky because we need to not care about both the IO, and also the  RealWorld*, and it does so avoiding mentioning any s type (which is what the  type family gives access to). The 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.& io-classes' io-classesDeprecated. Use & instead.%&'%&' Safe-Inferred+,+, Safe-Inferred/ io-classesA helper monad for IOSimPOR.0 io-classesMark a thread for schedule exploration. All threads that are forked by it are also included in the exploration./0/0 Safe-Inferred69= 3 io-classesMonads which can 4.9 io-classesSupport for safely working in the presence of asynchronous exceptions.:This is typically not needed directly as the utilities in N and D cover most use cases.> io-classesUsed in MSee  exceptions' package for discussion and motivation.B io-classesThe default handler type for S , whcih is a generalisation of .D io-classesCatching exceptions.3Covers standard utilities to respond to exceptions.M 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.N io-classesThrowing exceptions, and resource handling in the presence of exceptions.6Does not include the ability to respond to exceptions.S io-classesLike S but for D rather than only . io-classesUsed in the default S implementation.*NPORQDGEKFIJHLM9:<=;576834 >?@ABCS*NPORQDGEKFIJHLM9:<=;576834 >?@ABCS  Safe-Inferred ')*16=f io-classesDefault implementation of . io-classesWrapper around  that stores a call stackn io-classesn allows to trace values of stm variables when stm transaction is committed. This allows to verify invariants when a variable is committed.o io-classes:Construct a trace output out of previous & new value of a . The callback is called whenever an stm transaction which modifies the  is committed.This is supported by IOSim (and IOSimPOR);  has a trivial instance.The simplest example is: 6 traceTVar (Proxy @m) tvar (\_ -> TraceString . show)  Note that the interpretation of y depends on the monad m itself (see y).y io-classes4A GADT which instructs how to trace the value. The { will use dynamic tracing, e.g. "Control.Monad.IOSim.traceM"; while | 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 o 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 instanceo io-classes)callback which receives initial value or  (if it is a newly created ), and the committed value.}~yz{|nrwpuqvsxotlmjkhifgdebc}~yz{|nrwpuqvsxotlmjkhifgdebc  Safe-Inferred )*1!vnrwpuqvsxotyz{|}~!nrwpuqvsxotyz{|}~ Safe-Inferred!otot Safe-Inferred"\ sx sx Safe-Inferred"qvqv Safe-Inferred#pupu Safe-Inferred#v Safe-Inferred#rwrw Safe-Inferred$B Safe-Inferred$nnrwpuqvsxotyz{|}~~  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<* 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=57 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[\]^_`abbcdefghijklmnopqrstuvwxyz{|}~                                                                                                                                                                                                                           b "n"d)io-classes-1.5.0.0-IHV97s85XfT4an33opVqHVControl.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.MonadTimer io-classesControl.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.MonadSTM Data.Functionon"async-2.2.5-5kKt5d4Ledo3x5gfRsbtxL!Control.Concurrent.Async.InternalAsyncCancelledbaseGHC.Exception.Type SomeException Exception toException fromExceptiondisplayExceptionGHC.IO MaskingStateUnmaskedMaskedInterruptibleMaskedUninterruptible time-1.12.2(Data.Time.Clock.Internal.NominalDiffTimeNominalDiffTime Data.Time.Clock.Internal.UTCTimeUTCTime Data.Time.Clock.Internal.UTCDiff addUTCTime diffUTCTime MonadEventlog traceEventIO traceMarkerIO$fMonadEventlogReaderT$fMonadEventlogIO MonadForkforkIOforkOnforkIOWithUnmask forkFinallythrowTo killThreadyield MonadThreadThreadId myThreadId labelThreadlabelThisThread$fMonadThreadReaderT$fMonadThreadIO$fMonadForkReaderT $fMonadForkIOMonadSTstToIO 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 writeTMVar 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 TraceDynamiclabelTMVarDefaulttraceTMVarDefaultnewTMVarDefaultnewEmptyTMVarDefaulttakeTMVarDefaulttryTakeTMVarDefaultputTMVarDefaulttryPutTMVarDefaultreadTMVarDefaulttryReadTMVarDefaultswapTMVarDefaultwriteTMVarDefaultisEmptyTMVarDefaultlabelTQueueDefaultnewTQueueDefaultwriteTQueueDefaultreadTQueueDefaulttryReadTQueueDefaultisEmptyTQueueDefaultpeekTQueueDefaulttryPeekTQueueDefaultflushTQueueDefaultunGetTQueueDefaultlabelTBQueueDefaultnewTBQueueDefaultreadTBQueueDefaulttryReadTBQueueDefaultpeekTBQueueDefaulttryPeekTBQueueDefaultwriteTBQueueDefaultisEmptyTBQueueDefaultisFullTBQueueDefaultlengthTBQueueDefaultflushTBQueueDefaultunGetTBQueueDefaultlabelTSemDefaultnewTSemDefaultwaitTSemDefaultsignalTSemDefaultsignalTSemNDefaultlabelTChanDefaultnewTChanDefaultnewBroadcastTChanDefaultwriteTChanDefaultreadTChanDefaulttryReadTChanDefaultpeekTChanDefaulttryPeekTChanDefaultdupTChanDefaultunGetTChanDefaultisEmptyTChanDefaultcloneTChanDefaultthrowSTMcatchSTM$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.BaseStringGHC.STSTghc-prim GHC.TypesIO(primitive-0.9.0.0-2Ut0u6h4ou624O572IFc4SControl.Monad.Primitive PrimMonad PrimStateControl.ExceptioncatchesHandlerBlockedIndefinitelyGHC.IO.ExceptionBlockedIndefinitelyOnSTM GHC.Conc.Sync stm-2.5.1.0Control.Monad.STM GHC.MaybeNothingGHC.MVarControl.Concurrent.MVar GHC.Conc.IOSystem.Timeout