-- Stability : experimental
-- Portability : non-portable (requires universal quantification for runST)
--
--- $Id: ST.hs,v 1.3 2001/07/03 11:37:49 simonmar Exp $
+-- $Id: ST.hs,v 1.5 2001/12/21 15:07:21 simonmar Exp $
--
-- The State Transformer Monad, ST
--
#ifdef __GLASGOW_HASKELL__
import GHC.ST
-import GHC.Prim ( unsafeCoerce#, RealWorld )
+import GHC.Base ( unsafeCoerce#, RealWorld )
import GHC.IOBase ( IO(..), stToIO )
+-- This relies on IO and ST having the same representation modulo the
+-- constraint on the type of the state
+--
unsafeIOToST :: IO a -> ST s a
unsafeIOToST (IO io) = ST $ \ s -> (unsafeCoerce# io) s
#endif