Type.Reflection.Unsafe

base-4.12.0.0: Basic libraries

Copyright | (c) The University of Glasgow CWI 2001--2015
License | BSD-style (see the file libraries/base/LICENSE)
Safe Haskell | Safe
Language | Haskell2010

Type.Reflection.Unsafe

Contents

- Type representations
- Kind representations
- Type constructors

Description

The representations of the types `TyCon` and `TypeRep`, and the function `mkTyCon` which is used by derived instances of `Typeable` to construct `TyCon`s.

Be warned, these functions can be used to construct ill-kinded type representations.

Synopsis

- data TypeRep (a :: k)
- mkTrApp :: forall k1 k2 (a :: k1 -> k2) (b :: k1). TypeRep (a :: k1 -> k2) -> TypeRep (b :: k1) -> TypeRep (a b)
- mkTyCon :: String -> String -> String -> Int -> KindRep -> TyCon
- typeRepFingerprint :: TypeRep a -> Fingerprint
- someTypeRepFingerprint :: SomeTypeRep -> Fingerprint
- data KindRep where
  - KindRepTyConApp TyCon [KindRep]
  - KindRepVar !KindBndr
  - KindRepApp KindRep KindRep
  - KindRepFun KindRep KindRep
  - KindRepTYPE !RuntimeRep
  - KindRepTypeLitS TypeLitSort Addr#
  - KindRepTypeLitD TypeLitSort [Char]
  - pattern KindRepTypeLit :: TypeLitSort -> String -> KindRep
- data TypeLitSort
  - = TypeLitSymbol
  - | TypeLitNat
- data TyCon
- mkTrCon :: forall k (a :: k). TyCon -> [SomeTypeRep] -> TypeRep a
- tyConKindRep :: TyCon -> KindRep
- tyConKindArgs :: TyCon -> Int
- tyConFingerprint :: TyCon -> Fingerprint

# Type representations

data TypeRep (a :: k) #

A concrete representation of a (monomorphic) type. `TypeRep` supports reasonably efficient equality.

Instances

TestEquality (TypeRep :: k -> Type) # |
Instance details Defined in Data.Typeable.Internal Methods testEquality :: TypeRep a -> TypeRep b -> Maybe (a :~: b) #
Eq (TypeRep a) # | Since: base-2.1
Instance details Defined in Data.Typeable.Internal Methods (==) :: TypeRep a -> TypeRep a -> Bool Source # (/=) :: TypeRep a -> TypeRep a -> Bool Source #
Ord (TypeRep a) # | Since: base-4.4.0.0
Instance details Defined in Data.Typeable.Internal Methods compare :: TypeRep a -> TypeRep a -> Ordering Source # (<) :: TypeRep a -> TypeRep a -> Bool Source # (<=) :: TypeRep a -> TypeRep a -> Bool Source # (>) :: TypeRep a -> TypeRep a -> Bool Source # (>=) :: TypeRep a -> TypeRep a -> Bool Source # max :: TypeRep a -> TypeRep a -> TypeRep a Source # min :: TypeRep a -> TypeRep a -> TypeRep a Source #
Show (TypeRep a) # |
Instance details Defined in Data.Typeable.Internal Methods showsPrec :: Int -> TypeRep a -> ShowS # show :: TypeRep a -> String # showList :: [TypeRep a] -> ShowS #

mkTrApp :: forall k1 k2 (a :: k1 -> k2) (b :: k1). TypeRep (a :: k1 -> k2) -> TypeRep (b :: k1) -> TypeRep (a b) #

Construct a representation for a type application.

mkTyCon #

Arguments

:: String | package name
-> String | module name
-> String | the name of the type constructor
-> Int | number of kind variables
-> KindRep | kind representation
-> TyCon | A unique `TyCon` object Used when the strings are dynamically allocated, eg from binary deserialisation

Exquisitely unsafe.

typeRepFingerprint :: TypeRep a -> Fingerprint #

Observe the `Fingerprint` of a type representation

Since: base-4.8.0.0

someTypeRepFingerprint :: SomeTypeRep -> Fingerprint #

# Kind representations

data KindRep Source #

The representation produced by GHC for conjuring up the kind of a `TypeRep`. See Note [Representing TyCon kinds: KindRep] in TcTypeable.

Constructors

KindRepTyConApp TyCon [KindRep] |
KindRepVar !KindBndr |
KindRepApp KindRep KindRep |
KindRepFun KindRep KindRep |
KindRepTYPE !RuntimeRep |
KindRepTypeLitS TypeLitSort Addr# |
KindRepTypeLitD TypeLitSort [Char] |

Bundled Patterns

pattern KindRepTypeLit :: TypeLitSort -> String -> KindRep |

Instances

Show KindRep # |
Instance details Defined in GHC.Show Methods showsPrec :: Int -> KindRep -> ShowS # show :: KindRep -> String # showList :: [KindRep] -> ShowS #

data TypeLitSort Source #

Constructors

TypeLitSymbol |
TypeLitNat |

Instances

Show TypeLitSort # | Since: base-4.11.0.0
Instance details Defined in GHC.Show Methods showsPrec :: Int -> TypeLitSort -> ShowS # show :: TypeLitSort -> String # showList :: [TypeLitSort] -> ShowS #

# Type constructors

data TyCon Source #

Instances

Eq TyCon |
Instance details Defined in GHC.Classes Methods (==) :: TyCon -> TyCon -> Bool Source # (/=) :: TyCon -> TyCon -> Bool Source #
Ord TyCon |
Instance details Defined in GHC.Classes Methods compare :: TyCon -> TyCon -> Ordering Source # (<) :: TyCon -> TyCon -> Bool Source # (<=) :: TyCon -> TyCon -> Bool Source # (>) :: TyCon -> TyCon -> Bool Source # (>=) :: TyCon -> TyCon -> Bool Source # max :: TyCon -> TyCon -> TyCon Source # min :: TyCon -> TyCon -> TyCon Source #
Show TyCon # | Since: base-2.1
Instance details Defined in GHC.Show Methods showsPrec :: Int -> TyCon -> ShowS # show :: TyCon -> String # showList :: [TyCon] -> ShowS #

mkTrCon :: forall k (a :: k). TyCon -> [SomeTypeRep] -> TypeRep a #

Construct a representation for a type constructor applied at a monomorphic kind.

Note that this is unsafe as it allows you to construct ill-kinded types.

tyConKindRep :: TyCon -> KindRep #

tyConKindArgs :: TyCon -> Int #

tyConFingerprint :: TyCon -> Fingerprint #