content: {-# 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
  