concrete-typerep-0.1.0.2: Binary and Hashable instances for TypeRep

Safe HaskellNone
LanguageHaskell98

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 Hashable instance for ConcreteTypeRep may 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:

Synopsis

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: cTypeOf a == cTypeOf b if and only if a and b have the same type. The hashing and serialization functions preserve this equality.

Instances

Eq ConcreteTypeRep 
Show ConcreteTypeRep 
Binary ConcreteTypeRep 
Hashable ConcreteTypeRep

This instance is guaranteed to be consistent for a single run of the program, but not for multiple runs.

Typeable * ConcreteTypeRep 

cTypeOf :: Typeable a => a -> ConcreteTypeRep Source

"Concrete" version of typeOf.

toTypeRep :: ConcreteTypeRep -> TypeRep Source

Converts to the underlying TypeRep

fromTypeRep :: TypeRep -> ConcreteTypeRep Source

Converts from the underlying TypeRep