h*$"$      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU0.2.1.0 Safe-Inferred%')*<> contextA " provides a read-only view into a  .  trades the   ability to register new context for the ability to arbitrarily transform context values locally to the .contextThe  controls the behavior used by Context.Concurrent when propagating context from a "parent" thread to a new thread.contextAn exception which may be thrown when the calling thread does not have a registered context.!contextOpaque type that manages thread-indexed storage of context values.%contextSet the default context value for a store. If the store was initialized as an empty store, this function converts it to a non-empty store. If the store was initialized as a non-empty store, this overwrites the default context value.One common use case for this function is to convert an empty store in a global variable to a non-empty store while the application is initializing/acquiring resources: depsStore :: Store Dependencies depsStore = unsafePerformIO $ Context.newStore Context.defaultPropagation Nothing {-# NOINLINE depsStore #-} main :: IO () main = do let config = -- ... withDependencies config \deps -> do Context.setDefault depsStore deps -- ...'contextProvide the calling thread its current context from the specified ! , if present.)context$Register a context in the specified ! on behalf of the calling thread, for the duration of the specified action.*contextProvides a new !. This is a lower-level function and is provided mainly to give library authors more fine-grained control when using a ! as an implementation detail. /  should generally be preferred over this function when acquiring a !.+contextCreates a new !2. This is a lower-level function and is provided only' to support the use case of creating a ! as a global: store :: Store Int store = unsafePerformIO $ Context.newStore Context.defaultPropagation Nothing {-# NOINLINE store #-})Outside of the global variable use case,  ,  , or even the lower-level   should always3 be preferred over this function when acquiring a !..contextProvide the calling thread a view of its current context from the specified  . Throws a  4 when the calling thread has no registered context./contextProvide the calling thread a view of its current context from the specified  , if present.0context Create a  from the provided  .*contextThe strategy used by Context.Concurrent for propagating context from a "parent" thread to a new thread.contextThe default value for the !.+Providing a value will produce a non-empty ! such that , , and  are guaranteed to never throw   when applied to this !. Providing V will produce an empty ! such that , , and  will throw  ? when the calling thread has no registered context. Providing V is useful when the != will contain context values that are always thread-specific.+contextThe strategy used by Context.Concurrent for propagating context from a "parent" thread to a new thread.contextThe default value for the !.+Providing a value will produce a non-empty ! such that , , and  are guaranteed to never throw   when applied to this !. Providing V will produce an empty ! such that , , and  will throw  ? when the calling thread has no registered context. Providing V is useful when the != will contain context values that are always thread-specific.(!"#$ *+),-'(%&./01234567(!"#$ *+),-'(%&./01234567 Safe-Inferred{ =contextSee W.>contextSee X.?contextSee Y.@contextSee Z.AcontextSee [.BcontextSee \.CcontextSee ].DcontextSee ^.EcontextSee _.;=>?@ABCDE  `abcdefghijklmnopqrstuvwxyz{|}~=>?@ABCDE   Safe-InferredFcontext The default  . For any   initialized with this , Context.Concurrent will automatically propagate the "parent" thread's latest context value from this  ? so that that context is accessible in a newly-created thread.GcontextThis ) does no propagation whatsoever. For any   initialized with this , Context.Concurrent will not; propagate the "parent" thread's context values from this  ) in any way to the newly-created thread.*+%FG*+%FG Safe-InferredA./0./0 Safe-InferredHcontextProvides a new, non-empty ! that uses the specified context value as a default when the calling thread has no registered context. L, M, and J are guaranteed to never throw  when applied to a non-empty !.IcontextProvides a new, empty !. L, M, and J will throw  when the calling thread has no registered context. Useful when the != will contain context values that are always thread-specific.Jcontext5Adjust the calling thread's context in the specified !5 for the duration of the specified action. Throws a 4 when the calling thread has no registered context.KcontextConvenience function to J the context then supply the adjusted context to the inner action. This function is equivalent to calling J and then immediately calling L in the inner action of J, e.g.: doStuff :: Store Thing -> (Thing -> Thing) -> IO () doStuff store f = do adjust store f do adjustedThing <- mine store ... Throws a 4 when the calling thread has no registered context.LcontextProvide the calling thread its current context from the specified ! . Throws a 4 when the calling thread has no registered context.McontextProvide the calling thread a selection from its current context in the specified ! . Throws a 4 when the calling thread has no registered context.NcontextProvide the calling thread a selection from its current context in the specified ! , if present.!HI)JKLM'N./0`s~z?= B>abcdefghij@Aklmnopqr {|}tuvwxy C DE*+%FG !HI)JKLM'N Safe-Inferred!Ocontext#Register a context in the implicit ! on behalf of the calling thread, for the duration of the specified action.Pcontext4Adjust the calling thread's context in the implicit !5 for the duration of the specified action. Throws a 4 when the calling thread has no registered context.QcontextConvenience function to P the context then supply the adjusted context to the inner action. This function is equivalent to calling P and then immediately calling R in the inner action of P, e.g.: doStuff :: Store Thing -> (Thing -> Thing) -> IO () doStuff store f = do adjust store f do adjustedThing <- mine store ... Throws a 4 when the calling thread has no registered context.RcontextProvide the calling thread its current context from the implicit ! . Throws a 4 when the calling thread has no registered context.ScontextProvide the calling thread a selection from its current context in the implicit ! . Throws a 4 when the calling thread has no registered context.TcontextProvide the calling thread its current context from the implicit ! , if present.UcontextProvide the calling thread a selection from its current context in the implicit ! , if present.!HIOPQRSTU./0`s~z?= B>abcdefghij@Aklmnopqr {|}tuvwxy C DE*+%FG !HIOPQRSTU Safe-Inferred" !"#$%&&'()*+,-  .//01  2345678 9:;<=>?@ABCDEFGHIJKLMNOPQRSTU  VW8V6WXYKLMNOPQRSZ[Z\Z]Z^Z_Z`ZaZbZcZdefegeheiejekelemenopoqorosotouovwxwywzw{|}|~||&context-0.2.1.0-4AKJAx41jbHHwVjd5kydLoContext.ConcurrentContext.InternalContext.StorageContextContext.Implicitcontext Context.ViewViewStorewithNonEmptyStorewithEmptyStore withStoreNotFoundExceptionmineminesadjust Paths_contextbase GHC.Conc.SyncThreadId myThreadIdgetNumCapabilitiessetNumCapabilities killThreadthrowToyieldthreadCapabilitymkWeakThreadId GHC.Conc.IO threadDelayControl.ConcurrentrtsSupportsBoundThreadsisCurrentThreadBoundthreadWaitReadthreadWaitWritethreadWaitReadSTMthreadWaitWriteSTMRegistry$sel:ref:RegistryAnyStore MkAnyStoreMkViewPropagationStrategy NoPropagationLatestPropagation$sel:threadId:NotFoundExceptionState$sel:stacks:State$sel:def:State$sel:ref:Store$sel:key:Store setDefaultthrowContextNotFoundmineMaymineMayOnDefaultusenewStorepushpopviewviewMaytoViewregistry emptyRegistrywithPropagatorwithRegisteredPropagatorregister unregisterbug $fFunctorView$fEqNotFoundException$fGenericNotFoundException$fShowNotFoundException$fExceptionNotFoundExceptionforkIO forkFinallyforkIOWithUnmaskforkOnforkOnWithUnmaskforkOSforkOSWithUnmaskrunInBoundThreadrunInUnboundThreaddefaultPropagation noPropagation withAdjustedminesMay GHC.MaybeNothingGHC.MVarMVar newEmptyMVarnewMVartakeMVarreadMVarputMVar tryTakeMVar tryPutMVar tryReadMVar isEmptyMVarControl.Concurrent.MVaraddMVarFinalizerwithMVar modifyMVar_swapMVarwithMVarMasked modifyMVarmodifyMVarMasked_modifyMVarMasked mkWeakMVarControl.Concurrent.ChanChannewChan writeChanreadChandupChangetChanContentswriteList2ChanControl.Concurrent.QSemQSemnewQSemwaitQSem signalQSemControl.Concurrent.QSemNQSemNnewQSemN waitQSemN signalQSemNversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDirgetDataFileName getSysconfDir