| Safe Haskell | None |
|---|
Data.ConcreteTypeRep
Description
This module defines Binary and Hashable instances for TypeRep. These are defined on a newtype of TypeRep, namely ConcreteTypeRep, for two purposes:
- to avoid making orphan instances
- the
Hashableinstance forConcreteTypeRepmay not be pure enough for some people's tastes.
As usual with Typeable, this module will typically be used with some variant of Data.Dynamic. Two possible uses of this module are:
- making hashmaps:
HashMapConcreteTypeRepDynamic - serializing
Dynamics.
- data ConcreteTypeRep
- cTypeOf :: Typeable a => a -> ConcreteTypeRep
- toTypeRep :: ConcreteTypeRep -> TypeRep
- fromTypeRep :: TypeRep -> ConcreteTypeRep
Documentation
data ConcreteTypeRep Source
Abstract type providing the functionality of TypeRep, but additionally supporting hashing and serialization.
The Eq instance is just the Eq instance for TypeRep, so an analogous guarantee holds: if and only if cTypeOf a == cTypeOf ba and b have the same type.
The hashing and serialization functions preserve this equality.
Instances
| Eq ConcreteTypeRep | |
| Show ConcreteTypeRep | |
| Typeable ConcreteTypeRep | |
| Binary ConcreteTypeRep | |
| Hashable ConcreteTypeRep | This instance is guaranteed to be consistent for a single run of the program, but not for multiple runs. |
cTypeOf :: Typeable a => a -> ConcreteTypeRepSource
"Concrete" version of typeOf.
toTypeRep :: ConcreteTypeRep -> TypeRepSource
Converts to the underlying TypeRep
fromTypeRep :: TypeRep -> ConcreteTypeRepSource
Converts from the underlying TypeRep