-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Type structure analysis -- -- Provides facilities to match type structures. Useful for checking -- protocol compliance in client-server applications. @package type-structure @version 0.1.0 module TypeStructure -- | A type structure graph production. -- -- Supposed to be used like this: -- --
-- graph (undefined :: Int) --class TypeStructure a graph :: TypeStructure a => a -> Graph -- | Automatically derive the instance of TypeStructure using -- Template Haskell. derive :: Name -> Q [Dec] -- | 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. type Graph = (Type, Dictionary) -- | A type signature. data Type Type_App :: Type -> Type -> Type Type_Var :: TypeVar -> Type Type_Con :: TypeCon -> Type -- | A type variable. type TypeVar = Name -- | A type constructor. type TypeCon = (Namespace, Name) -- | A name. type Name = Text -- | A namespace (module name). type Namespace = Text -- | A dictionary of type declarations indexed by type constructors. type Dictionary = [(TypeCon, Declaration)] -- | A type declaration. data Declaration Declaration_ADT :: [TypeVar] -> [Constructor] -> Declaration Declaration_Primitive :: Declaration Declaration_Synonym :: [TypeVar] -> Type -> Declaration -- | A data constructor used in type declaration. type Constructor = (Name, [Type]) instance TypeStructure Declaration instance TypeStructure Type instance TypeStructure Day instance TypeStructure DiffTime instance TypeStructure UniversalTime instance TypeStructure UTCTime instance TypeStructure NominalDiffTime instance TypeStructure TimeOfDay instance TypeStructure TimeZone instance TypeStructure LocalTime instance TypeStructure ZonedTime instance TypeStructure AbsoluteTime instance TypeStructure LazyText instance TypeStructure Text instance TypeStructure LazyByteString instance TypeStructure ByteString instance (TypeStructure k, TypeStructure v) => TypeStructure (HashMap k v) instance TypeStructure a => TypeStructure (HashSet a) instance (TypeStructure k, TypeStructure a) => TypeStructure (Map k a) instance TypeStructure a => TypeStructure (Tree a) instance TypeStructure a => TypeStructure (Set a) instance TypeStructure a => TypeStructure (IntMap a) instance TypeStructure IntSet instance (TypeStructure i, TypeStructure e) => TypeStructure (Array i e) instance (TypeStructure i, TypeStructure e) => TypeStructure (UArray i e) instance TypeStructure a => TypeStructure (Vector a) instance TypeStructure a => TypeStructure (Identity a) instance (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) instance (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) instance (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) instance (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) instance (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) instance (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) instance (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) instance (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) instance (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) instance (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) instance (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) instance (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) instance (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) instance (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) instance (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) instance (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) instance (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) instance (TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e, TypeStructure f, TypeStructure g) => TypeStructure (a, b, c, d, e, f, g) instance (TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e, TypeStructure f) => TypeStructure (a, b, c, d, e, f) instance (TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d, TypeStructure e) => TypeStructure (a, b, c, d, e) instance (TypeStructure a, TypeStructure b, TypeStructure c, TypeStructure d) => TypeStructure (a, b, c, d) instance (TypeStructure a, TypeStructure b, TypeStructure c) => TypeStructure (a, b, c) instance (TypeStructure a, TypeStructure b) => TypeStructure (a, b) instance TypeStructure a => TypeStructure (StableName a) instance TypeStructure TypeRep instance TypeStructure ThreadId instance TypeStructure _0 => TypeStructure (Any (* -> *) _0) instance (TypeStructure a, TypeStructure b) => TypeStructure (Either a b) instance TypeStructure a => TypeStructure (Maybe a) instance TypeStructure a => TypeStructure (Seq a) instance TypeStructure a => TypeStructure (Dual a) instance TypeStructure a => TypeStructure (Product a) instance TypeStructure a => TypeStructure (Sum a) instance TypeStructure All instance TypeStructure Any instance TypeStructure a => TypeStructure (First a) instance TypeStructure a => TypeStructure (Last a) instance TypeStructure a => TypeStructure (Ratio a) instance TypeStructure E12 instance TypeStructure E9 instance TypeStructure E6 instance TypeStructure E3 instance TypeStructure E2 instance TypeStructure E1 instance TypeStructure E0 instance TypeStructure a => TypeStructure (Fixed a) instance TypeStructure Ordering instance TypeStructure Bool instance TypeStructure Char instance TypeStructure Double instance TypeStructure Float instance TypeStructure Word64 instance TypeStructure Word32 instance TypeStructure Word16 instance TypeStructure Word8 instance TypeStructure Word instance TypeStructure Integer instance TypeStructure Int64 instance TypeStructure Int32 instance TypeStructure Int16 instance TypeStructure Int8 instance TypeStructure Int instance TypeStructure a => TypeStructure [a] instance TypeStructure () instance (TypeStructure _0, TypeStructure _1) => TypeStructure (_0 -> _1)