-- * Type representations
TypeRep, -- abstract, instance of: Eq, Show, Typeable
TyCon, -- abstract, instance of: Eq, Show, Typeable
+ showsTypeRep,
-- * Construction of type representations
mkTyCon, -- :: String -> TyCon
import Data.Int
import Data.Word
import Data.List( foldl )
+import Unsafe.Coerce
#ifdef __GLASGOW_HASKELL__
import GHC.Base
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)
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
--
typeRepKey :: TypeRep -> IO Int
typeRepKey (TypeRep (Key i) _ _) = return i
-#endif
--
-- let fTy = mkTyCon "Foo" in show (mkTyConApp (mkTyCon ",,")
showChar ' ' .
showArgs tys
+showsTypeRep :: TypeRep -> ShowS
+showsTypeRep = shows
+
instance Show TyCon where
showsPrec _ (TyCon _ s) = showString s