X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=GHC%2FST.lhs;h=909a8da338e287ec8219f6e2874457a141f9e066;hb=fe8111f1ad72af9e3787e9088d02519f500b1c49;hp=413a0453713160fb83d34e37cb8a9cd37ffcf02b;hpb=920dbbddf57ff02e0734943bb93dd4cecc5568e0;p=haskell-directory.git diff --git a/GHC/ST.lhs b/GHC/ST.lhs index 413a045..909a8da 100644 --- a/GHC/ST.lhs +++ b/GHC/ST.lhs @@ -39,13 +39,18 @@ too many people got bitten by space leaks when it was lazy. -- by @s@, and returns a value of type @a@. -- The @s@ parameter is either -- --- * an unstantiated type variable (inside invocations of 'runST'), or +-- * an uninstantiated type variable (inside invocations of 'runST'), or -- -- * 'RealWorld' (inside invocations of 'Control.Monad.ST.stToIO'). -- -- It serves to keep the internal states of different invocations -- of 'runST' separate from each other and from invocations of -- 'Control.Monad.ST.stToIO'. +-- +-- The '>>=' and '>>' operations are strict in the state (though not in +-- values stored in the state). For example, +-- +-- @'runST' (writeSTRef _|_ v >>= f) = _|_@ newtype ST s a = ST (STRep s a) type STRep s a = State# s -> (# State# s, a #)