type-structure-0.1.0: src/TypeStructure/Model.hs
module TypeStructure.Model where
import TypeStructure.Prelude.Basic
import TypeStructure.Prelude.Data
-- |
-- 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_Var TypeVar |
Type_Con TypeCon
deriving (Read, Show, Ord, Eq, Data, Typeable, Generic)
instance Hashable 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_Primitive |
Declaration_Synonym [TypeVar] Type
deriving (Read, Show, Ord, Eq, Data, Typeable, Generic)
instance Hashable Declaration
-- | A data constructor used in type declaration.
type Constructor = (Name, [Type])