{-# LANGUAGE Safe #-} -- | -- -- Module : Data.Typeable -- Copyright : (c) The University of Glasgow, CWI 2001--2004 -- License : BSD-style (see the file libraries/base/LICENSE) -- -- Maintainer : libraries@haskell.org -- Stability : stable -- Portability : portable -- -- The 'Typeable' class reifies types to some extent by associating type -- representations to types. These type representations can be compared, -- and one can in turn define a type-safe cast operation. To this end, -- an unsafe cast is guarded by a test for type (representation) -- equivalence. The module "Data.Dynamic" uses Typeable for an -- implementation of dynamics. The module "Data.Data" uses Typeable -- and type-safe cast (but not dynamics) to support the \"Scrap your -- boilerplate\" style of generic programming. -- -- == Compatibility Notes -- -- Since GHC 8.2, GHC has supported type-indexed type representations. -- "Data.Typeable" provides type representations which are qualified over this -- index, providing an interface very similar to the "Typeable" notion seen in -- previous releases. For the type-indexed interface, see "Type.Reflection". -- -- Since GHC 7.10, all types automatically have 'Typeable' instances derived. -- This is in contrast to previous releases where 'Typeable' had to be -- explicitly derived using the @DeriveDataTypeable@ language extension. -- -- Since GHC 7.8, 'Typeable' is poly-kinded. The changes required for this might -- break some old programs involving 'Typeable'. More details on this, including -- how to fix your code, can be found on the -- -- module Data.Typeable (-- * The Typeable class Typeable, typeOf, typeRep, -- * Propositional equality (:~:)(Refl), (:~~:)(HRefl), -- * Type-safe cast cast, eqT, heqT, decT, hdecT, gcast, -- * Generalized casts for higher-order kinds gcast1, gcast2, -- * A canonical proxy type Proxy(..), -- * Type representations TypeRep, rnfTypeRep, showsTypeRep, mkFunTy, -- * Observing type representations funResultTy, splitTyConApp, typeRepArgs, typeRepTyCon, typeRepFingerprint, -- * Type constructors TyCon, tyConPackage, tyConModule, tyConName, rnfTyCon, tyConFingerprint, -- * For backwards compatibility typeOf1, typeOf2, typeOf3, typeOf4, typeOf5, typeOf6, typeOf7, trLiftedRep ) where import GHC.Internal.Data.Typeable