Îõ³h$°Î(      !"#$%&'None-./ÇÉÔÖ×ÙŒst2ÍA type that shows that the state threads s and s' refer to a heap region that overlaps in some way such that s and s' can both access the overlap, while maintaining privacy in their own heap regions.st2A pretty type alias for .st2A value of type  STRef s a' is a mutable variable in state thread s , containing a value of type ast2ÏA simple product type containing both the state thread and value inside of the st2ÈConvenience type alias for expressing ST computations more succintly.st2;The strict state-transformer monad. A computation of type  s a* transforms an internal state indexed by s, and returns a value of type a. The s parameter is either7an uninstantiated type variable (inside invocations of ), or (inside invocations of ).ÃIt serves to keep the internal states of different invocations of 3 separate from each other and from invocations of .The ( and )Þ operations are strict in the state (though not in values stored in the state). For example,  (writeSTRef _|_ v >>= f) = _|_ st2Convert an ST2 to an ST st2Convert an ST to an ST2 st2 0 is useful when we want a lifted result from an  computation. See  below. st2  allows an  computation to be deferred lazily. When passed a value of type ST a, the ; computation will only be performed when the value of the a is demanded. st2  allows an  computation to be deferred lazily. When passed a value of type ST a, the ; computation will only be performed when the value of the a is demanded.÷The computation may be performed multiple times by different threads, possibly at the same time. To prevent this, use   instead.st2'Embed a strict state transformer in an * action. The : parameter indicates that the internal state used by the . computation is a special one supplied by the *= monad, and thus distinct from those used by invocations of .st2 Convert an * action into an 9 action. The type of the result is constrained to use a 6 state, and therefore the result cannot be passed to .st2 Convert an  action to a +.st2 Convert any , to À with an arbitrary state token. This operation is highly unsafe!st2 Convert an - action with an arbitrary state token to any +". This operation is highly unsafe!st2Extract the value out of the  computation. Compare this to Ö; in this case, the rest of the program is permitted to reference the state thread s". This operation is highly unsafe!st2 Build a new  in the current state threadst2Read the value of an st2Write a new value into an st2ÂMove a variable that you own into a region with common overlap.st2Lift an 4 computation into a context with another heap regionst2Lift an 4 computation into a context with another heap regionst2àGiven proof that one has access to the heap regions s and s', yield an STRef to the region s.st2ÊGiven proof that one has access to the heap regions s and s', yield an % that swaps the order of the regions.st2ØReturn the value computed by a state transformer computation over a shared heap. The forall3 ensures that the internal state(s) used by the 8 computation is inaccessible to the rest of the program.st2ÅReturn the value computed by a state transformer computation. The forall- ensures that the internal state used by the ; computation is inaccessible to the rest of the program.st2àAllow the result of a state transformer computation to be used (lazily) inside the computation. Note that if f is strict,  f = _|_.    -        !"#$%&'()*+,-+,./01231245 st2-0.1.1-7C6SMzVoQeSJe63ux96WphControl.Monad.ST2Control.Monad.STstToIOghc-primGHC.Prim RealWorldCommon∩STRefSTretSTRepSTtoBaseST fromBaseSTliftSTunsafeInterleaveSTunsafeDupableInterleaveSTioToSTstToPrimunsafePrimToSTunsafeSTToPrimunsafeInlineSTnewSTRef readSTRef writeSTRefshareliftLliftRusesymmrunST2runSTfixST$fShowST $fMonoidST $fSemigroupST $fMonadST$fApplicativeST $fFunctorST $fPrimBaseST $fPrimMonadST $fEqSTRefbaseGHC.Base>>=>> GHC.TypesIO(primitive-0.7.3.0-GaTKHWlkxwrBb07qgsmPECControl.Monad.Primitive PrimMonadPrimBase