import GHC.Base
import GHC.Show
+import Control.Monad( forever )
default ()
\end{code}
data STret s a = STret (State# s) a
+{-# SPECIALISE forever :: ST s a -> ST s b #-}
+-- See Note [Make forever INLINABLE] in Control.Monad
+
-- liftST is useful when we want a lifted result from an ST computation. See
-- fixST below.
liftST :: ST s a -> State# s -> STret s a