Add a more efficient Data.List.foldl' for GHC (from GHC's utils/Util.lhs)
[ghc-base.git] / Data / Typeable.hs
index 26623d7..f548dc9 100644 (file)
@@ -40,6 +40,7 @@ module Data.Typeable
        -- * Type representations
        TypeRep,        -- abstract, instance of: Eq, Show, Typeable
        TyCon,          -- abstract, instance of: Eq, Show, Typeable
+       showsTypeRep,
 
        -- * Construction of type representations
        mkTyCon,        -- :: String  -> TyCon
@@ -86,6 +87,7 @@ import Data.Either
 import Data.Int
 import Data.Word
 import Data.List( foldl )
+import Unsafe.Coerce
 
 #ifdef __GLASGOW_HASKELL__
 import GHC.Base
@@ -119,19 +121,13 @@ import Hugs.Prelude       ( Key(..), TypeRep(..), TyCon(..), Ratio,
                          ArrayException, AsyncException, Handle,
                          Ptr, FunPtr, ForeignPtr, StablePtr )
 import Hugs.IORef      ( IORef, newIORef, readIORef, writeIORef )
-import Hugs.IOExts     ( unsafePerformIO, unsafeCoerce )
+import Hugs.IOExts     ( unsafePerformIO )
        -- For the Typeable instance
 import Hugs.Array      ( Array )
 import Hugs.ConcBase   ( MVar )
 #endif
 
-#ifdef __GLASGOW_HASKELL__
-unsafeCoerce :: a -> b
-unsafeCoerce = unsafeCoerce#
-#endif
-
 #ifdef __NHC__
-import NonStdUnsafeCoerce (unsafeCoerce)
 import NHC.IOExtras (IORef,newIORef,readIORef,writeIORef,unsafePerformIO)
 import IO (Handle)
 import Ratio (Ratio)
@@ -164,6 +160,7 @@ data TyCon = TyCon !Key String
 
 instance Eq TyCon where
   (TyCon t1 _) == (TyCon t2 _) = t1 == t2
+#endif
 
 -- | Returns a unique integer associated with a 'TypeRep'.  This can
 -- be used for making a mapping ('Data.IntMap.IntMap') with TypeReps
@@ -177,7 +174,6 @@ instance Eq TyCon where
 --
 typeRepKey :: TypeRep -> IO Int
 typeRepKey (TypeRep (Key i) _ _) = return i
-#endif
 
        -- 
        -- let fTy = mkTyCon "Foo" in show (mkTyConApp (mkTyCon ",,")
@@ -280,6 +276,9 @@ instance Show TypeRep where
            showChar ' '      . 
            showArgs tys
 
+showsTypeRep :: TypeRep -> ShowS
+showsTypeRep = shows
+
 instance Show TyCon where
   showsPrec _ (TyCon _ s) = showString s