[project @ 1996-12-19 09:10:02 by simonpj]
[ghc-hetmet.git] / ghc / compiler / utils / SST.lhs
index 4c4cbb4..e574a84 100644 (file)
@@ -11,6 +11,7 @@ module SST(
        thenSST, thenSST_, returnSST, fixSST,
        thenFSST, thenFSST_, returnFSST, failFSST,
        recoverFSST, recoverSST, fixFSST,
+       unsafeInterleaveSST, 
 
        newMutVarSST, readMutVarSST, writeMutVarSST
 #if __GLASGOW_HASKELL__ >= 200
@@ -70,6 +71,11 @@ stToSST st s
 runSST :: SST REAL_WORLD r  -> r
 runSST m = case m realWorld# of SST_R r s -> r
 
+unsafeInterleaveSST :: SST s r -> SST s r
+unsafeInterleaveSST m s = SST_R r s            -- Duplicates the state!
+                       where
+                         SST_R r _ = m s
+
 returnSST :: r -> SST s r
 thenSST   :: SST s r -> (r -> State# s -> b) -> State# s -> b
 thenSST_  :: SST s r -> (State# s -> b) -> State# s -> b