packages feed

hydra-0.1.0: src/gen-main/haskell/Hydra/Mantle.hs

-- | A set of types which supplement hydra/core with type variants, graphs, and elements

module Hydra.Mantle where

import qualified Hydra.Core as Core
import Data.List
import Data.Map
import Data.Set

-- | An equality judgement: less than, equal to, or greater than
data Comparison = 
  ComparisonLessThan  |
  ComparisonEqualTo  |
  ComparisonGreaterThan 
  deriving (Eq, Ord, Read, Show)

_Comparison = (Core.Name "hydra/mantle.Comparison")

_Comparison_lessThan = (Core.FieldName "lessThan")

_Comparison_equalTo = (Core.FieldName "equalTo")

_Comparison_greaterThan = (Core.FieldName "greaterThan")

-- | A graph element, having a name, data term (value), and schema term (type)
data Element m = 
  Element {
    elementName :: Core.Name,
    elementSchema :: (Core.Term m),
    elementData :: (Core.Term m)}
  deriving (Eq, Ord, Read, Show)

_Element = (Core.Name "hydra/mantle.Element")

_Element_name = (Core.FieldName "name")

_Element_schema = (Core.FieldName "schema")

_Element_data = (Core.FieldName "data")

-- | The identifier of an elimination constructor
data EliminationVariant = 
  EliminationVariantElement  |
  EliminationVariantList  |
  EliminationVariantNominal  |
  EliminationVariantOptional  |
  EliminationVariantRecord  |
  EliminationVariantUnion 
  deriving (Eq, Ord, Read, Show)

_EliminationVariant = (Core.Name "hydra/mantle.EliminationVariant")

_EliminationVariant_element = (Core.FieldName "element")

_EliminationVariant_list = (Core.FieldName "list")

_EliminationVariant_nominal = (Core.FieldName "nominal")

_EliminationVariant_optional = (Core.FieldName "optional")

_EliminationVariant_record = (Core.FieldName "record")

_EliminationVariant_union = (Core.FieldName "union")

-- | The identifier of a function constructor
data FunctionVariant = 
  FunctionVariantCompareTo  |
  FunctionVariantElimination  |
  FunctionVariantLambda  |
  FunctionVariantPrimitive 
  deriving (Eq, Ord, Read, Show)

_FunctionVariant = (Core.Name "hydra/mantle.FunctionVariant")

_FunctionVariant_compareTo = (Core.FieldName "compareTo")

_FunctionVariant_elimination = (Core.FieldName "elimination")

_FunctionVariant_lambda = (Core.FieldName "lambda")

_FunctionVariant_primitive = (Core.FieldName "primitive")

-- | A graph, or set of named terms, together with its schema graph
data Graph m = 
  Graph {
    -- | All of the elements in the graph
    graphElements :: (Map Core.Name (Element m)),
    -- | The schema graph to this graph. If omitted, the graph is its own schema graph.
    graphSchema :: (Maybe (Graph m))}
  deriving (Eq, Ord, Read, Show)

_Graph = (Core.Name "hydra/mantle.Graph")

_Graph_elements = (Core.FieldName "elements")

_Graph_schema = (Core.FieldName "schema")

-- | The identifier of a literal constructor
data LiteralVariant = 
  LiteralVariantBinary  |
  LiteralVariantBoolean  |
  LiteralVariantFloat  |
  LiteralVariantInteger  |
  LiteralVariantString 
  deriving (Eq, Ord, Read, Show)

_LiteralVariant = (Core.Name "hydra/mantle.LiteralVariant")

_LiteralVariant_binary = (Core.FieldName "binary")

_LiteralVariant_boolean = (Core.FieldName "boolean")

_LiteralVariant_float = (Core.FieldName "float")

_LiteralVariant_integer = (Core.FieldName "integer")

_LiteralVariant_string = (Core.FieldName "string")

-- | Numeric precision: arbitrary precision, or precision to a specified number of bits
data Precision = 
  PrecisionArbitrary  |
  PrecisionBits Int
  deriving (Eq, Ord, Read, Show)

_Precision = (Core.Name "hydra/mantle.Precision")

_Precision_arbitrary = (Core.FieldName "arbitrary")

_Precision_bits = (Core.FieldName "bits")

-- | The identifier of a term expression constructor
data TermVariant = 
  TermVariantAnnotated  |
  TermVariantApplication  |
  TermVariantElement  |
  TermVariantFunction  |
  TermVariantLet  |
  TermVariantList  |
  TermVariantLiteral  |
  TermVariantMap  |
  TermVariantNominal  |
  TermVariantOptional  |
  TermVariantProduct  |
  TermVariantRecord  |
  TermVariantSet  |
  TermVariantStream  |
  TermVariantSum  |
  TermVariantUnion  |
  TermVariantVariable 
  deriving (Eq, Ord, Read, Show)

_TermVariant = (Core.Name "hydra/mantle.TermVariant")

_TermVariant_annotated = (Core.FieldName "annotated")

_TermVariant_application = (Core.FieldName "application")

_TermVariant_element = (Core.FieldName "element")

_TermVariant_function = (Core.FieldName "function")

_TermVariant_let = (Core.FieldName "let")

_TermVariant_list = (Core.FieldName "list")

_TermVariant_literal = (Core.FieldName "literal")

_TermVariant_map = (Core.FieldName "map")

_TermVariant_nominal = (Core.FieldName "nominal")

_TermVariant_optional = (Core.FieldName "optional")

_TermVariant_product = (Core.FieldName "product")

_TermVariant_record = (Core.FieldName "record")

_TermVariant_set = (Core.FieldName "set")

_TermVariant_stream = (Core.FieldName "stream")

_TermVariant_sum = (Core.FieldName "sum")

_TermVariant_union = (Core.FieldName "union")

_TermVariant_variable = (Core.FieldName "variable")

-- | A type expression together with free type variables occurring in the expression
data TypeScheme m = 
  TypeScheme {
    typeSchemeVariables :: [Core.VariableType],
    typeSchemeType :: (Core.Type m)}
  deriving (Eq, Ord, Read, Show)

_TypeScheme = (Core.Name "hydra/mantle.TypeScheme")

_TypeScheme_variables = (Core.FieldName "variables")

_TypeScheme_type = (Core.FieldName "type")

-- | The identifier of a type constructor
data TypeVariant = 
  TypeVariantAnnotated  |
  TypeVariantApplication  |
  TypeVariantElement  |
  TypeVariantFunction  |
  TypeVariantLambda  |
  TypeVariantList  |
  TypeVariantLiteral  |
  TypeVariantMap  |
  TypeVariantNominal  |
  TypeVariantOptional  |
  TypeVariantProduct  |
  TypeVariantRecord  |
  TypeVariantSet  |
  TypeVariantStream  |
  TypeVariantSum  |
  TypeVariantUnion  |
  TypeVariantVariable 
  deriving (Eq, Ord, Read, Show)

_TypeVariant = (Core.Name "hydra/mantle.TypeVariant")

_TypeVariant_annotated = (Core.FieldName "annotated")

_TypeVariant_application = (Core.FieldName "application")

_TypeVariant_element = (Core.FieldName "element")

_TypeVariant_function = (Core.FieldName "function")

_TypeVariant_lambda = (Core.FieldName "lambda")

_TypeVariant_list = (Core.FieldName "list")

_TypeVariant_literal = (Core.FieldName "literal")

_TypeVariant_map = (Core.FieldName "map")

_TypeVariant_nominal = (Core.FieldName "nominal")

_TypeVariant_optional = (Core.FieldName "optional")

_TypeVariant_product = (Core.FieldName "product")

_TypeVariant_record = (Core.FieldName "record")

_TypeVariant_set = (Core.FieldName "set")

_TypeVariant_stream = (Core.FieldName "stream")

_TypeVariant_sum = (Core.FieldName "sum")

_TypeVariant_union = (Core.FieldName "union")

_TypeVariant_variable = (Core.FieldName "variable")

-- | A type together with an instance of the type
data TypedTerm m = 
  TypedTerm {
    typedTermType :: (Core.Type m),
    typedTermTerm :: (Core.Term m)}
  deriving (Eq, Ord, Read, Show)

_TypedTerm = (Core.Name "hydra/mantle.TypedTerm")

_TypedTerm_type = (Core.FieldName "type")

_TypedTerm_term = (Core.FieldName "term")