h$$!      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUNone#%'(+8:< 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(!"#$ *+),-'(%&./01234567None+^ =contextSee W.>contextSee X.?contextSee Y.@contextSee Z.AcontextSee [.BcontextSee \.CcontextSee ].DcontextSee ^.EcontextSee _.;`abcdefghijklmnopqrstuvw xyz{|}~=>?@ABCDE=>?@ABCDE   NoneFcontext 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*+%FGNone./0./0None~HcontextProvides 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.`abcdefghijklmnopqrstuvw xyz{|}~!%')*+./0=>?@ABCDEFGHIJKLMN !HI)JKLM'NNone!COcontext#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.`abcdefghijklmnopqrstuvw xyz{|}~!%*+./0=>?@ABCDEFGHIOPQRSTU !HIOPQRSTU Safe-Inferred! !"#$%%&'()*+,  -../01234567 89:;<=>?@ABCDEFGHIJKLMNOPQRST  U V7U 5VWXJKLMNOPQRYZY[Y\Y]Y^Y_Y`abacadaefgfhfifjklkmknkokpkqkrksktuvuwuxuyuzu{u|u}u~u&context-0.2.0.0-A59zASSxO6JCM0zXJ8UhNiContext.ConcurrentContext.InternalContext.StorageContextContext.Implicit Context.ViewViewStorewithNonEmptyStorewithEmptyStore withStoreNotFoundExceptionmineminesadjust Paths_contextbaseControl.ConcurrentthreadWaitWriteSTMthreadWaitReadSTMthreadWaitWritethreadWaitReadisCurrentThreadBoundrtsSupportsBoundThreads GHC.Conc.IO threadDelay GHC.Conc.SyncmkWeakThreadIdthreadCapabilityyield myThreadIdthrowTo killThreadsetNumCapabilitiesgetNumCapabilitiesThreadIdRegistry$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.MaybeNothingControl.Concurrent.ChanwriteList2ChangetChanContentsdupChanreadChan writeChannewChanChanControl.Concurrent.QSem signalQSemwaitQSemnewQSemQSemControl.Concurrent.QSemN signalQSemN waitQSemNnewQSemNQSemNControl.Concurrent.MVar mkWeakMVaraddMVarFinalizermodifyMVarMaskedmodifyMVarMasked_ modifyMVar modifyMVar_withMVarMaskedwithMVarswapMVarGHC.MVar isEmptyMVar tryReadMVar tryPutMVar tryTakeMVarputMVarreadMVartakeMVarnewMVar newEmptyMVarMVarversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName