Hugs only: move the Typeable instance for ST back to Control.Monad.ST.
Having it in Data.Typeable, which is imported by Data.Dynamic, would mean
that every invocation of runhugs or ffihugs would need the -98 option.
#include "Typeable.h"
#ifdef __HUGS__
#include "Typeable.h"
#ifdef __HUGS__
import Hugs.ST
import qualified Hugs.LazyST as LazyST
import Hugs.ST
import qualified Hugs.LazyST as LazyST
+INSTANCE_TYPEABLE2(ST,sTTc,"ST")
+INSTANCE_TYPEABLE0(RealWorld,realWorldTc,"RealWorld")
+
fixST :: (a -> ST s a) -> ST s a
fixST f = LazyST.lazyToStrictST (LazyST.fixST (LazyST.strictToLazyST . f))
fixST :: (a -> ST s a) -> ST s a
fixST f = LazyST.lazyToStrictST (LazyST.fixST (LazyST.strictToLazyST . f))
import Hugs.Prelude
import Hugs.IO
import Hugs.IORef
import Hugs.Prelude
import Hugs.IO
import Hugs.IORef
import Hugs.IOExts
#endif
import Hugs.IOExts
#endif
INSTANCE_TYPEABLE2(Either,eitherTc,"Either")
INSTANCE_TYPEABLE2((->),funTc,"->")
INSTANCE_TYPEABLE1(IO,ioTc,"IO")
INSTANCE_TYPEABLE2(Either,eitherTc,"Either")
INSTANCE_TYPEABLE2((->),funTc,"->")
INSTANCE_TYPEABLE1(IO,ioTc,"IO")
+#ifdef __GLASGOW_HASKELL__
INSTANCE_TYPEABLE2(ST,stTc,"ST")
INSTANCE_TYPEABLE2(ST,stTc,"ST")
INSTANCE_TYPEABLE0((),unitTc,"()")
#ifndef __NHC__
INSTANCE_TYPEABLE2((,),pairTc,",")
INSTANCE_TYPEABLE0((),unitTc,"()")
#ifndef __NHC__
INSTANCE_TYPEABLE2((,),pairTc,",")