{-# LANGUAGE Safe #-} {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE MagicHash #-} -- | -- -- Module : Type.Reflection -- Copyright : (c) The University of Glasgow, CWI 2001--2017 -- License : BSD-style (see the file libraries/base/LICENSE) -- -- Maintainer : libraries@haskell.org -- Stability : stable -- Portability : non-portable (requires GADTs and compiler support) -- -- This provides a type-indexed type representation mechanism, similar to that -- described by, -- -- * Simon Peyton-Jones, Stephanie Weirich, Richard Eisenberg, -- Dimitrios Vytiniotis. "<https://www.microsoft.com/en-us/research/wp-content/uploads/2016/08/dynamic.pdf A reflection on types>". -- /Proc. Philip Wadler's 60th birthday Festschrift/, Edinburgh (April 2016). -- -- The interface provides 'I.TypeRep', a type representation which can -- be safely decomposed and composed. See "Data.Dynamic" for an example of this. -- -- @since 4.10.0.0 -- module Type.Reflection (-- * The Typeable class Typeable, typeRep, withTypeable, -- * Propositional equality (:~:)(Refl), (:~~:)(HRefl), -- * Type representations -- ** Type-Indexed TypeRep, pattern TypeRep, typeOf, pattern App, pattern Con, pattern Con', pattern Fun, typeRepTyCon, rnfTypeRep, eqTypeRep, decTypeRep, typeRepKind, splitApps, -- ** Quantified SomeTypeRep(..), someTypeRep, someTypeRepTyCon, rnfSomeTypeRep, -- * Type constructors TyCon, tyConPackage, tyConModule, tyConName, rnfTyCon, -- * Module names Module, moduleName, modulePackage, rnfModule ) where import GHC.Internal.Type.Reflection