module Data.Type.Typeable
( toTypeable
, toTypeable1
, toTypeable2
, toTypeable3
, toTypeable4
, toTypeable5
, toTypeable6
, toTypeable7
) where
import Data.Type.Framework
import Data.Type.Generated
import Data.Typeable
migrateTypeRep :: Typed t => t -> TypeRep
migrateTypeRep = mapTypeID (\p s -> mkTyConApp (mkTyCon (s++'@':p)) []) mkAppTy . typeID
toTypeable :: forall t. Typed (Type t) => t -> TypeRep
toTypeable _ = migrateTypeRep (type_ :: Type t)
toTypeable1 :: forall t a. Typed (TypeX t) => t a -> TypeRep
toTypeable1 _ = migrateTypeRep (type_ :: TypeX t)
toTypeable2 :: forall t a b. Typed (TypeXX t) => t a b -> TypeRep
toTypeable2 _ = migrateTypeRep (type_ :: TypeXX t)
toTypeable3 :: forall t a b c. Typed (TypeXXX t) => t a b c -> TypeRep
toTypeable3 _ = migrateTypeRep (type_ :: TypeXXX t)
toTypeable4 :: forall t a b c d. Typed (TypeXXXX t) => t a b c d -> TypeRep
toTypeable4 _ = migrateTypeRep (type_ :: TypeXXXX t)
toTypeable5 :: forall t a b c d e. Typed (TypeXXXXX t) => t a b c d e -> TypeRep
toTypeable5 _ = migrateTypeRep (type_ :: TypeXXXXX t)
toTypeable6 :: forall t a b c d e f. Typed (TypeXXXXXX t) => t a b c d e f -> TypeRep
toTypeable6 _ = migrateTypeRep (type_ :: TypeXXXXXX t)
toTypeable7 :: forall t a b c d e f g. Typed (TypeXXXXXXX t) => t a b c d e f g -> TypeRep
toTypeable7 _ = migrateTypeRep (type_ :: TypeXXXXXXX t)