type-structure-0.1.0: Type structure analysis

Safe HaskellNone

TypeStructure

Contents

Synopsis

Class

class TypeStructure a whereSource

A type structure graph production.

Supposed to be used like this:

 graph (undefined :: Int)

Methods

graph :: a -> GraphSource

Instances

TypeStructure Bool 
TypeStructure Char 
TypeStructure Double 
TypeStructure Float 
TypeStructure Int 
TypeStructure Int8 
TypeStructure Int16 
TypeStructure Int32 
TypeStructure Int64 
TypeStructure Integer 
TypeStructure Ordering 
TypeStructure Word 
TypeStructure Word8 
TypeStructure Word16 
TypeStructure Word32 
TypeStructure Word64 
TypeStructure () 
TypeStructure All 
TypeStructure Any 
TypeStructure TypeRep 
TypeStructure ByteString 
TypeStructure Text 
TypeStructure ThreadId 
TypeStructure E0 
TypeStructure E1 
TypeStructure E12 
TypeStructure E2 
TypeStructure E3 
TypeStructure E6 
TypeStructure E9 
TypeStructure IntSet 
TypeStructure TimeZone 
TypeStructure TimeOfDay 
TypeStructure ZonedTime 
TypeStructure LocalTime 
TypeStructure UTCTime 
TypeStructure NominalDiffTime 
TypeStructure UniversalTime 
TypeStructure DiffTime 
TypeStructure Day 
TypeStructure AbsoluteTime 
TypeStructure Declaration 
TypeStructure Type 
TypeStructure a => TypeStructure [a] 
TypeStructure a => TypeStructure (Ratio a) 
TypeStructure a => TypeStructure (Maybe a) 
TypeStructure a => TypeStructure (Dual a) 
TypeStructure a => TypeStructure (First a) 
TypeStructure a => TypeStructure (Last a) 
TypeStructure a => TypeStructure (Product a) 
TypeStructure a => TypeStructure (Sum a) 
TypeStructure a => TypeStructure (Identity a) 
TypeStructure a => TypeStructure (StableName a) 
TypeStructure a => TypeStructure (Fixed a) 
TypeStructure a => TypeStructure (HashSet a) 
TypeStructure a => TypeStructure (Vector a) 
TypeStructure a => TypeStructure (IntMap a) 
TypeStructure a => TypeStructure (Set a) 
TypeStructure a => TypeStructure (Seq a) 
TypeStructure a => TypeStructure (Tree a) 
(TypeStructure _0, TypeStructure _1) => TypeStructure (_0 -> _1) 
TypeStructure _0 => TypeStructure (Any (* -> *) _0) 
(TypeStructure a, TypeStructure b) => TypeStructure (Either a b) 
(TypeStructure a, TypeStructure b) => TypeStructure (a, b) 
(TypeStructure k, TypeStructure v) => TypeStructure (HashMap k v) 
(TypeStructure i, TypeStructure e) => TypeStructure (Array i e) 
(TypeStructure k, TypeStructure a) => TypeStructure (Map k a) 
(TypeStructure i, TypeStructure e) => TypeStructure (UArray i e) 
(TypeStructure a, TypeStructure b, TypeStructure c) => TypeStructure (a, b, c) 
(TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d) => TypeStructure (a, b, c, d) 
(TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e) => TypeStructure (a, b, c, d, e) 
(TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e, TypeStructure f) => TypeStructure (a, b, c, d, e, f) 
(TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e, TypeStructure f, TypeStructure g) => TypeStructure (a, b, c, d, e, f, g) 
(TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e, TypeStructure f, TypeStructure g, TypeStructure h) => TypeStructure (a, b, c, d, e, f, g, h) 
(TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e, TypeStructure f, TypeStructure g, TypeStructure h, TypeStructure i) => TypeStructure (a, b, c, d, e, f, g, h, i) 
(TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e, TypeStructure f, TypeStructure g, TypeStructure h, TypeStructure i, TypeStructure j) => TypeStructure (a, b, c, d, e, f, g, h, i, j) 
(TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e, TypeStructure f, TypeStructure g, TypeStructure h, TypeStructure i, TypeStructure j, TypeStructure k) => TypeStructure (a, b, c, d, e, f, g, h, i, j, k) 
(TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e, TypeStructure f, TypeStructure g, TypeStructure h, TypeStructure i, TypeStructure j, TypeStructure k, TypeStructure l) => TypeStructure (a, b, c, d, e, f, g, h, i, j, k, l) 
(TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e, TypeStructure f, TypeStructure g, TypeStructure h, TypeStructure i, TypeStructure j, TypeStructure k, TypeStructure l, TypeStructure m) => TypeStructure (a, b, c, d, e, f, g, h, i, j, k, l, m) 
(TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e, TypeStructure f, TypeStructure g, TypeStructure h, TypeStructure i, TypeStructure j, TypeStructure k, TypeStructure l, TypeStructure m, TypeStructure n) => TypeStructure (a, b, c, d, e, f, g, h, i, j, k, l, m, n) 
(TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e, TypeStructure f, TypeStructure g, TypeStructure h, TypeStructure i, TypeStructure j, TypeStructure k, TypeStructure l, TypeStructure m, TypeStructure n, TypeStructure o) => TypeStructure (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) 
(TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e, TypeStructure f, TypeStructure g, TypeStructure h, TypeStructure i, TypeStructure j, TypeStructure k, TypeStructure l, TypeStructure m, TypeStructure n, TypeStructure o, TypeStructure p) => TypeStructure (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) 
(TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e, TypeStructure f, TypeStructure g, TypeStructure h, TypeStructure i, TypeStructure j, TypeStructure k, TypeStructure l, TypeStructure m, TypeStructure n, TypeStructure o, TypeStructure p, TypeStructure q) => TypeStructure (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) 
(TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e, TypeStructure f, TypeStructure g, TypeStructure h, TypeStructure i, TypeStructure j, TypeStructure k, TypeStructure l, TypeStructure m, TypeStructure n, TypeStructure o, TypeStructure p, TypeStructure q, TypeStructure r) => TypeStructure (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) 
(TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e, TypeStructure f, TypeStructure g, TypeStructure h, TypeStructure i, TypeStructure j, TypeStructure k, TypeStructure l, TypeStructure m, TypeStructure n, TypeStructure o, TypeStructure p, TypeStructure q, TypeStructure r, TypeStructure s) => TypeStructure (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) 
(TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e, TypeStructure f, TypeStructure g, TypeStructure h, TypeStructure i, TypeStructure j, TypeStructure k, TypeStructure l, TypeStructure m, TypeStructure n, TypeStructure o, TypeStructure p, TypeStructure q, TypeStructure r, TypeStructure s, TypeStructure t) => TypeStructure (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) 
(TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e, TypeStructure f, TypeStructure g, TypeStructure h, TypeStructure i, TypeStructure j, TypeStructure k, TypeStructure l, TypeStructure m, TypeStructure n, TypeStructure o, TypeStructure p, TypeStructure q, TypeStructure r, TypeStructure s, TypeStructure t, TypeStructure u) => TypeStructure (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) 
(TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e, TypeStructure f, TypeStructure g, TypeStructure h, TypeStructure i, TypeStructure j, TypeStructure k, TypeStructure l, TypeStructure m, TypeStructure n, TypeStructure o, TypeStructure p, TypeStructure q, TypeStructure r, TypeStructure s, TypeStructure t, TypeStructure u, TypeStructure v) => TypeStructure (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) 
(TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e, TypeStructure f, TypeStructure g, TypeStructure h, TypeStructure i, TypeStructure j, TypeStructure k, TypeStructure l, TypeStructure m, TypeStructure n, TypeStructure o, TypeStructure p, TypeStructure q, TypeStructure r, TypeStructure s, TypeStructure t, TypeStructure u, TypeStructure v, TypeStructure w) => TypeStructure (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) 
(TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e, TypeStructure f, TypeStructure g, TypeStructure h, TypeStructure i, TypeStructure j, TypeStructure k, TypeStructure l, TypeStructure m, TypeStructure n, TypeStructure o, TypeStructure p, TypeStructure q, TypeStructure r, TypeStructure s, TypeStructure t, TypeStructure u, TypeStructure v, TypeStructure w, TypeStructure x) => TypeStructure (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) 

derive :: Name -> Q [Dec]Source

Automatically derive the instance of TypeStructure using Template Haskell.

Model

type Graph = (Type, Dictionary)Source

A representation of the type structure graph.

Consists of a type signature of the subject type and a dictionary of all the types it refers to internally with primitive types as end-nodes.

data Type Source

A type signature.

Instances

type TypeVar = NameSource

A type variable.

type TypeCon = (Namespace, Name)Source

A type constructor.

type Name = TextSource

A name.

type Namespace = TextSource

A namespace (module name).

type Dictionary = [(TypeCon, Declaration)]Source

A dictionary of type declarations indexed by type constructors.

type Constructor = (Name, [Type])Source

A data constructor used in type declaration.