base-4.7.0.1: Basic libraries

Copyright(c) The University of Glasgow, CWI 2001--2011
LicenseBSD-style (see the file libraries/base/LICENSE)
Safe HaskellUnsafe
LanguageHaskell2010

Data.Typeable.Internal

Description

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

Synopsis

Documentation

data Proxy t Source

A concrete, poly-kinded proxy type

Constructors

Proxy 

Instances

Monad (Proxy *) 
Functor (Proxy *) 
Applicative (Proxy *) 
Foldable (Proxy *) 
Traversable (Proxy *) 
Bounded (Proxy k s) 
Enum (Proxy k s) 
Eq (Proxy k s) 
Data t => Data (Proxy * t) 
Ord (Proxy k s) 
Read (Proxy k s) 
Show (Proxy k s) 
Ix (Proxy k s) 
Generic (Proxy * t) 
Monoid (Proxy * s) 
Typeable (k -> *) (Proxy k) 
type Rep (Proxy k t) 

data TypeRep Source

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

Constructors

TypeRep !Fingerprint TyCon [TypeRep] 

typeOf :: forall a. Typeable a => a -> TypeRep Source

typeOf1 :: forall t a. Typeable t => t a -> TypeRep Source

typeOf2 :: forall t a b. Typeable t => t a b -> TypeRep Source

typeOf3 :: forall t a b c. Typeable t => t a b c -> TypeRep Source

typeOf4 :: forall t a b c d. Typeable t => t a b c d -> TypeRep Source

typeOf5 :: forall t a b c d e. Typeable t => t a b c d e -> TypeRep Source

typeOf6 :: forall t a b c d e f. Typeable t => t a b c d e f -> TypeRep Source

typeOf7 :: forall t a b c d e f g. Typeable t => t a b c d e f g -> TypeRep Source

type Typeable1 a = Typeable a Source

Deprecated: renamed to Typeable

type Typeable2 a = Typeable a Source

Deprecated: renamed to Typeable

type Typeable3 a = Typeable a Source

Deprecated: renamed to Typeable

type Typeable4 a = Typeable a Source

Deprecated: renamed to Typeable

type Typeable5 a = Typeable a Source

Deprecated: renamed to Typeable

type Typeable6 a = Typeable a Source

Deprecated: renamed to Typeable

type Typeable7 a = Typeable a Source

Deprecated: renamed to Typeable

data TyCon Source

An abstract representation of a type constructor. TyCon objects can be built using mkTyCon.

Constructors

TyCon 

Fields

tyConHash :: !Fingerprint
 
tyConPackage :: String

Since: 4.5.0.0

tyConModule :: String

Since: 4.5.0.0

tyConName :: String

Since: 4.5.0.0

typeRep :: forall proxy a. Typeable a => proxy a -> TypeRep Source

Takes a value of type a and returns a concrete representation of that type.

Since: 4.7.0.0

mkTyCon3 Source

Arguments

:: String

package name

-> String

module name

-> String

the name of the type constructor

-> TyCon

A unique TyCon object

Builds a TyCon object representing a type constructor. An implementation of Data.Typeable should ensure that the following holds:

 A==A' ^ B==B' ^ C==C' ==> mkTyCon A B C == mkTyCon A' B' C'

mkTyConApp :: TyCon -> [TypeRep] -> TypeRep Source

Applies a type constructor to a sequence of types

mkAppTy :: TypeRep -> TypeRep -> TypeRep Source

Adds a TypeRep argument to a TypeRep.

typeRepTyCon :: TypeRep -> TyCon Source

Observe the type constructor of a type representation

class Typeable a where Source

The class Typeable allows a concrete representation of a type to be calculated.

Methods

typeRep# :: Proxy# a -> TypeRep Source

Instances

Typeable * Bool 
Typeable * Char 
Typeable * Double 
Typeable * Float 
Typeable * Int 
Typeable * Int8 
Typeable * Int16 
Typeable * Int32 
Typeable * Int64 
Typeable * Integer 
Typeable * Ordering 
Typeable * RealWorld 
Typeable * Word 
Typeable * Word8 
Typeable * Word16 
Typeable * Word32 
Typeable * Word64 
Typeable * () 
Typeable * SomeException 
Typeable * TyCon 
Typeable * TypeRep 
Typeable * ArithException 
Typeable * ErrorCall 
Typeable * IOException 
Typeable * Dynamic 
Typeable * CUIntMax 
Typeable * CIntMax 
Typeable * CUIntPtr 
Typeable * CIntPtr 
Typeable * CSUSeconds 
Typeable * CUSeconds 
Typeable * CTime 
Typeable * CClock 
Typeable * CSigAtomic 
Typeable * CWchar 
Typeable * CSize 
Typeable * CPtrdiff 
Typeable * CDouble 
Typeable * CFloat 
Typeable * CULLong 
Typeable * CLLong 
Typeable * CULong 
Typeable * CLong 
Typeable * CUInt 
Typeable * CInt 
Typeable * CUShort 
Typeable * CShort 
Typeable * CUChar 
Typeable * CSChar 
Typeable * CChar 
Typeable * IntPtr 
Typeable * WordPtr 
Typeable * Handle 
Typeable * ExitCode 
Typeable * ArrayException 
Typeable * AsyncException 
Typeable * SomeAsyncException 
Typeable * AssertionFailed 
Typeable * Deadlock 
Typeable * BlockedIndefinitelyOnSTM 
Typeable * BlockedIndefinitelyOnMVar 
Typeable * Fd 
Typeable * CRLim 
Typeable * CTcflag 
Typeable * CSpeed 
Typeable * CCc 
Typeable * CUid 
Typeable * CNlink 
Typeable * CGid 
Typeable * CSsize 
Typeable * CPid 
Typeable * COff 
Typeable * CMode 
Typeable * CIno 
Typeable * CDev 
Typeable * ThreadId 
Typeable * NestedAtomically 
Typeable * NonTermination 
Typeable * NoMethodError 
Typeable * RecUpdError 
Typeable * RecConError 
Typeable * RecSelError 
Typeable * PatternMatchFail 
Typeable * QSemN 
Typeable * Version 
Typeable * E12 
Typeable * E9 
Typeable * E6 
Typeable * E3 
Typeable * E2 
Typeable * E1 
Typeable * E0 
Typeable * Unique 
Typeable * SpecConstrAnnotation 
(Typeable (k1 -> k) s, Typeable k1 a) => Typeable k (s a)

Kind-polymorphic Typeable instance for type application

Typeable ((* -> *) -> Constraint) Alternative 
Typeable ((* -> *) -> Constraint) Applicative 
Typeable (* -> * -> * -> * -> * -> * -> * -> *) (,,,,,,) 
Typeable (* -> * -> * -> * -> * -> * -> *) (,,,,,) 
Typeable (* -> * -> * -> * -> * -> *) (,,,,) 
Typeable (* -> * -> * -> * -> *) (,,,) 
Typeable (* -> * -> * -> *) (,,) 
Typeable (* -> * -> *) (->) 
Typeable (* -> * -> *) Either 
Typeable (* -> * -> *) (,) 
Typeable (* -> * -> *) ST 
Typeable (* -> * -> *) STRef 
Typeable (* -> *) [] 
Typeable (* -> *) Ratio 
Typeable (* -> *) StablePtr 
Typeable (* -> *) IO 
Typeable (* -> *) Ptr 
Typeable (* -> *) FunPtr 
Typeable (* -> *) Maybe 
Typeable (* -> *) IORef 
Typeable (* -> *) MVar 
Typeable (* -> *) Weak 
Typeable (* -> *) ForeignPtr 
Typeable (* -> *) TVar 
Typeable (* -> *) STM 
Typeable (* -> *) Chan 
Typeable (* -> *) Complex 
Typeable (* -> *) Fixed 
Typeable (* -> *) StableName 
Typeable (* -> Constraint) Monoid 
Typeable (k -> k -> *) (Coercion k) 
Typeable (k -> k -> *) ((:~:) k) 
Typeable (k -> *) (Proxy k) 

mkFunTy :: TypeRep -> TypeRep -> TypeRep Source

A special case of mkTyConApp, which applies the function type constructor to a pair of types.

splitTyConApp :: TypeRep -> (TyCon, [TypeRep]) Source

Splits a type constructor application

funResultTy :: TypeRep -> TypeRep -> Maybe TypeRep Source

Applies a type to a function type. Returns: Just u if the first argument represents a function of type t -> u and the second argument represents a function of type t. Otherwise, returns Nothing.

typeRepArgs :: TypeRep -> [TypeRep] Source

Observe the argument types of a type representation

tyConString :: TyCon -> String Source

Deprecated: renamed to tyConName; tyConModule and tyConPackage are also available.

Observe string encoding of a type representation