X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Control%2FMonad%2FST.hs;h=7341cefd9fe160433f0e31b48ba35e0e3b8193eb;hb=7783a84ab51ff149885a96498cefcb7f31c27513;hp=2a3985ad66147d48def836a1affb8f41f8c53d05;hpb=f7a485978f04e84b086f1974b88887cc72d832d0;p=ghc-base.git diff --git a/Control/Monad/ST.hs b/Control/Monad/ST.hs index 2a3985a..7341cef 100644 --- a/Control/Monad/ST.hs +++ b/Control/Monad/ST.hs @@ -8,21 +8,26 @@ -- Stability : experimental -- Portability : non-portable (requires universal quantification for runST) -- --- The State Transformer Monad, ST +-- This library provides support for /strict/ state threads, as +-- described in the PLDI \'94 paper by John Launchbury and Simon Peyton +-- Jones /Lazy State Threads/. -- ----------------------------------------------------------------------------- module Control.Monad.ST - ( - ST -- abstract, instance of Functor, Monad, Typeable. - , runST -- :: (forall s. ST s a) -> a - , fixST -- :: (a -> ST s a) -> ST s a - , unsafeInterleaveST -- :: ST s a -> ST s a + ( + -- * The 'ST' Monad + ST, -- abstract, instance of Functor, Monad, Typeable. + runST, -- :: (forall s. ST s a) -> a + fixST, -- :: (a -> ST s a) -> ST s a - , unsafeIOToST -- :: IO a -> ST s a + -- * Unsafe operations + unsafeInterleaveST, -- :: ST s a -> ST s a + unsafeIOToST, -- :: IO a -> ST s a - , RealWorld -- abstract - , stToIO -- :: ST RealWorld a -> IO a + -- * Converting 'ST' to 'IO' + RealWorld, -- abstract + stToIO -- :: ST RealWorld a -> IO a ) where import Prelude @@ -30,6 +35,10 @@ import Prelude import Control.Monad.Fix import Data.Dynamic +#ifdef __HUGS__ +import Hugs.ST +#endif + #ifdef __GLASGOW_HASKELL__ import GHC.ST import GHC.Base ( unsafeCoerce#, RealWorld )