hydra-0.12.0: src/main/haskell/Hydra/Dsl/Mantle.hs
module Hydra.Dsl.Mantle where
import Hydra.Kernel
import Hydra.Dsl.Phantoms
import Hydra.Mantle
import qualified Data.Map as M
import qualified Data.Maybe as Y
accessorEdge :: TTerm AccessorNode -> TTerm AccessorPath -> TTerm AccessorNode -> TTerm AccessorEdge
accessorEdge source path target = record _AccessorEdge [
_AccessorEdge_source>>: source,
_AccessorEdge_path>>: path,
_AccessorEdge_target>>: target]
accessorEdgeSource = unitVariant _AccessorEdge _AccessorEdge_source
accessorEdgePath = unitVariant _AccessorEdge _AccessorEdge_path
accessorEdgeTarget = unitVariant _AccessorEdge _AccessorEdge_target
accessorGraph :: TTerm [AccessorNode] -> TTerm [AccessorEdge] -> TTerm AccessorGraph
accessorGraph nodes edges = record _AccessorGraph [
_AccessorGraph_nodes>>: nodes,
_AccessorGraph_edges>>: edges]
accessorGraphNodes = unitVariant _AccessorGraph _AccessorGraph_nodes
accessorGraphEdges = unitVariant _AccessorGraph _AccessorGraph_edges
accessorNode :: TTerm Name -> TTerm String -> TTerm String -> TTerm AccessorNode
accessorNode name label id = record _AccessorNode [
_AccessorNode_name>>: name,
_AccessorNode_label>>: label,
_AccessorNode_id>>: id]
accessorNodeName = unitVariant _AccessorNode _AccessorNode_name
accessorNodeLabel = unitVariant _AccessorNode _AccessorNode_label
accessorNodeId = unitVariant _AccessorNode _AccessorNode_id
accessorPath :: TTerm [TermAccessor] -> TTerm AccessorPath
accessorPath path = wrap _AccessorPath path
caseConventionCamel = unitVariant _CaseConvention _CaseConvention_camel
caseConventionPascal = unitVariant _CaseConvention _CaseConvention_pascal
caseConventionLowerSnake = unitVariant _CaseConvention _CaseConvention_lowerSnake
caseConventionUpperSnake = unitVariant _CaseConvention _CaseConvention_upperSnake
eitherLeft :: TTerm a -> TTerm (Hydra.Mantle.Either a b)
eitherLeft = variant _Either _Either_left
eitherRight :: TTerm b -> TTerm (Hydra.Mantle.Either a b)
eitherRight = variant _Either _Either_right
eliminationVariant :: EliminationVariant -> TTerm EliminationVariant
eliminationVariant v = unitVariant _EliminationVariant $ case v of
EliminationVariantProduct -> _EliminationVariant_product
EliminationVariantRecord -> _EliminationVariant_record
EliminationVariantUnion -> _EliminationVariant_union
EliminationVariantWrap -> _EliminationVariant_wrap
eliminationVariantProduct :: TTerm EliminationVariant
eliminationVariantProduct = unitVariant _EliminationVariant _EliminationVariant_product
eliminationVariantRecord :: TTerm EliminationVariant
eliminationVariantRecord = unitVariant _EliminationVariant _EliminationVariant_record
eliminationVariantUnion :: TTerm EliminationVariant
eliminationVariantUnion = unitVariant _EliminationVariant _EliminationVariant_union
eliminationVariantWrap :: TTerm EliminationVariant
eliminationVariantWrap = unitVariant _EliminationVariant _EliminationVariant_wrap
functionVariant :: FunctionVariant -> TTerm FunctionVariant
functionVariant v = unitVariant _FunctionVariant $ case v of
FunctionVariantElimination -> _FunctionVariant_elimination
FunctionVariantLambda -> _FunctionVariant_lambda
FunctionVariantPrimitive -> _FunctionVariant_primitive
functionVariantElimination :: TTerm FunctionVariant
functionVariantElimination = unitVariant _FunctionVariant _FunctionVariant_elimination
functionVariantLambda :: TTerm FunctionVariant
functionVariantLambda = unitVariant _FunctionVariant _FunctionVariant_lambda
functionVariantPrimitive :: TTerm FunctionVariant
functionVariantPrimitive = unitVariant _FunctionVariant _FunctionVariant_primitive
literalVariant :: LiteralVariant -> TTerm LiteralVariant
literalVariant v = unitVariant _LiteralVariant $ case v of
LiteralVariantBinary -> _LiteralVariant_binary
LiteralVariantBoolean -> _LiteralVariant_boolean
LiteralVariantFloat -> _LiteralVariant_float
LiteralVariantInteger -> _LiteralVariant_integer
LiteralVariantString -> _LiteralVariant_string
literalVariantBinary :: TTerm LiteralVariant
literalVariantBinary = unitVariant _LiteralVariant _LiteralVariant_binary
literalVariantBoolean :: TTerm LiteralVariant
literalVariantBoolean = unitVariant _LiteralVariant _LiteralVariant_boolean
literalVariantFloat :: TTerm LiteralVariant
literalVariantFloat = unitVariant _LiteralVariant _LiteralVariant_float
literalVariantInteger :: TTerm LiteralVariant
literalVariantInteger = unitVariant _LiteralVariant _LiteralVariant_integer
literalVariantString :: TTerm LiteralVariant
literalVariantString = unitVariant _LiteralVariant _LiteralVariant_string
precisionArbitrary :: TTerm Precision
precisionArbitrary = unitVariant _Precision _Precision_arbitrary
precisionBits :: TTerm Int -> TTerm Precision
precisionBits = variant _Precision _Precision_bits
termAccessorAnnotatedSubject :: TTerm TermAccessor
termAccessorAnnotatedSubject = unitVariant _TermAccessor _TermAccessor_annotatedSubject
termAccessorApplicationFunction :: TTerm TermAccessor
termAccessorApplicationFunction = unitVariant _TermAccessor _TermAccessor_applicationFunction
termAccessorApplicationArgument :: TTerm TermAccessor
termAccessorApplicationArgument = unitVariant _TermAccessor _TermAccessor_applicationArgument
termAccessorLambdaBody :: TTerm TermAccessor
termAccessorLambdaBody = unitVariant _TermAccessor _TermAccessor_lambdaBody
termAccessorUnionCasesDefault :: TTerm TermAccessor
termAccessorUnionCasesDefault = unitVariant _TermAccessor _TermAccessor_unionCasesDefault
termAccessorUnionCasesBranch :: TTerm Name -> TTerm TermAccessor
termAccessorUnionCasesBranch = variant _TermAccessor _TermAccessor_unionCasesBranch
termAccessorLetEnvironment :: TTerm TermAccessor
termAccessorLetEnvironment = unitVariant _TermAccessor _TermAccessor_letEnvironment
termAccessorLetBinding :: TTerm Name -> TTerm TermAccessor
termAccessorLetBinding = variant _TermAccessor _TermAccessor_letBinding
termAccessorListElement :: TTerm Int -> TTerm TermAccessor
termAccessorListElement = variant _TermAccessor _TermAccessor_listElement
termAccessorMapKey :: TTerm Int -> TTerm TermAccessor
termAccessorMapKey = variant _TermAccessor _TermAccessor_mapKey
termAccessorMapValue :: TTerm Int -> TTerm TermAccessor
termAccessorMapValue = variant _TermAccessor _TermAccessor_mapValue
termAccessorOptionalTerm :: TTerm TermAccessor
termAccessorOptionalTerm = unitVariant _TermAccessor _TermAccessor_optionalTerm
termAccessorProductTerm :: TTerm Int -> TTerm TermAccessor
termAccessorProductTerm = variant _TermAccessor _TermAccessor_productTerm
termAccessorRecordField :: TTerm Name -> TTerm TermAccessor
termAccessorRecordField = variant _TermAccessor _TermAccessor_recordField
termAccessorSetElement :: TTerm Int -> TTerm TermAccessor
termAccessorSetElement = variant _TermAccessor _TermAccessor_setElement
termAccessorSumTerm :: TTerm TermAccessor
termAccessorSumTerm = unitVariant _TermAccessor _TermAccessor_sumTerm
termAccessorTypeLambdaBody :: TTerm TermAccessor
termAccessorTypeLambdaBody = unitVariant _TermAccessor _TermAccessor_typeLambdaBody
termAccessorTypeApplicationTerm :: TTerm TermAccessor
termAccessorTypeApplicationTerm = unitVariant _TermAccessor _TermAccessor_typeApplicationTerm
termAccessorInjectionTerm :: TTerm TermAccessor
termAccessorInjectionTerm = unitVariant _TermAccessor _TermAccessor_injectionTerm
termAccessorWrappedTerm :: TTerm TermAccessor
termAccessorWrappedTerm = unitVariant _TermAccessor _TermAccessor_wrappedTerm
termVariant :: TermVariant -> TTerm TermVariant
termVariant v = unitVariant _TermVariant $ case v of
TermVariantAnnotated -> _TermVariant_annotated
TermVariantApplication -> _TermVariant_application
TermVariantFunction -> _TermVariant_function
TermVariantLet -> _TermVariant_let
TermVariantList -> _TermVariant_list
TermVariantLiteral -> _TermVariant_literal
TermVariantMap -> _TermVariant_map
TermVariantOptional -> _TermVariant_optional
TermVariantProduct -> _TermVariant_product
TermVariantRecord -> _TermVariant_record
TermVariantSet -> _TermVariant_set
TermVariantSum -> _TermVariant_sum
TermVariantTypeLambda -> _TermVariant_typeLambda
TermVariantTypeApplication -> _TermVariant_typeApplication
TermVariantUnion -> _TermVariant_union
TermVariantUnit -> _TermVariant_unit
TermVariantVariable -> _TermVariant_variable
TermVariantWrap -> _TermVariant_wrap
termVariantAnnotated :: TTerm TermVariant
termVariantAnnotated = unitVariant _TermVariant _TermVariant_annotated
termVariantApplication :: TTerm TermVariant
termVariantApplication = unitVariant _TermVariant _TermVariant_application
termVariantFunction :: TTerm TermVariant
termVariantFunction = unitVariant _TermVariant _TermVariant_function
termVariantLet :: TTerm TermVariant
termVariantLet = unitVariant _TermVariant _TermVariant_let
termVariantList :: TTerm TermVariant
termVariantList = unitVariant _TermVariant _TermVariant_list
termVariantLiteral :: TTerm TermVariant
termVariantLiteral = unitVariant _TermVariant _TermVariant_literal
termVariantMap :: TTerm TermVariant
termVariantMap = unitVariant _TermVariant _TermVariant_map
termVariantOptional :: TTerm TermVariant
termVariantOptional = unitVariant _TermVariant _TermVariant_optional
termVariantProduct :: TTerm TermVariant
termVariantProduct = unitVariant _TermVariant _TermVariant_product
termVariantRecord :: TTerm TermVariant
termVariantRecord = unitVariant _TermVariant _TermVariant_record
termVariantSet :: TTerm TermVariant
termVariantSet = unitVariant _TermVariant _TermVariant_set
termVariantSum :: TTerm TermVariant
termVariantSum = unitVariant _TermVariant _TermVariant_sum
termVariantTypeLambda :: TTerm TermVariant
termVariantTypeLambda = unitVariant _TermVariant _TermVariant_typeLambda
termVariantTypeApplication :: TTerm TermVariant
termVariantTypeApplication = unitVariant _TermVariant _TermVariant_typeApplication
termVariantUnion :: TTerm TermVariant
termVariantUnion = unitVariant _TermVariant _TermVariant_union
termVariantUnit :: TTerm TermVariant
termVariantUnit = unitVariant _TermVariant _TermVariant_unit
termVariantVariable :: TTerm TermVariant
termVariantVariable = unitVariant _TermVariant _TermVariant_variable
termVariantWrap :: TTerm TermVariant
termVariantWrap = unitVariant _TermVariant _TermVariant_wrap
typeVariant :: TypeVariant -> TTerm TypeVariant
typeVariant v = unitVariant _TypeVariant $ case v of
TypeVariantAnnotated -> _TypeVariant_annotated
TypeVariantApplication -> _TypeVariant_application
TypeVariantFunction -> _TypeVariant_function
TypeVariantForall -> _TypeVariant_forall
TypeVariantList -> _TypeVariant_list
TypeVariantLiteral -> _TypeVariant_literal
TypeVariantMap -> _TypeVariant_map
TypeVariantOptional -> _TypeVariant_optional
TypeVariantProduct -> _TypeVariant_product
TypeVariantRecord -> _TypeVariant_record
TypeVariantSet -> _TypeVariant_set
TypeVariantUnion -> _TypeVariant_union
TypeVariantUnit -> _TypeVariant_unit
TypeVariantVariable -> _TypeVariant_variable
TypeVariantWrap -> _TypeVariant_wrap
typeVariantAnnotated :: TTerm TypeVariant
typeVariantAnnotated = unitVariant _TypeVariant _TypeVariant_annotated
typeVariantApplication :: TTerm TypeVariant
typeVariantApplication = unitVariant _TypeVariant _TypeVariant_application
typeVariantFunction :: TTerm TypeVariant
typeVariantFunction = unitVariant _TypeVariant _TypeVariant_function
typeVariantForall :: TTerm TypeVariant
typeVariantForall = unitVariant _TypeVariant _TypeVariant_forall
typeVariantList :: TTerm TypeVariant
typeVariantList = unitVariant _TypeVariant _TypeVariant_list
typeVariantLiteral :: TTerm TypeVariant
typeVariantLiteral = unitVariant _TypeVariant _TypeVariant_literal
typeVariantMap :: TTerm TypeVariant
typeVariantMap = unitVariant _TypeVariant _TypeVariant_map
typeVariantOptional :: TTerm TypeVariant
typeVariantOptional = unitVariant _TypeVariant _TypeVariant_optional
typeVariantProduct :: TTerm TypeVariant
typeVariantProduct = unitVariant _TypeVariant _TypeVariant_product
typeVariantRecord :: TTerm TypeVariant
typeVariantRecord = unitVariant _TypeVariant _TypeVariant_record
typeVariantSet :: TTerm TypeVariant
typeVariantSet = unitVariant _TypeVariant _TypeVariant_set
typeVariantSum :: TTerm TypeVariant
typeVariantSum = unitVariant _TypeVariant _TypeVariant_sum
typeVariantUnion :: TTerm TypeVariant
typeVariantUnion = unitVariant _TypeVariant _TypeVariant_union
typeVariantUnit :: TTerm TypeVariant
typeVariantUnit = unitVariant _TypeVariant _TypeVariant_unit
typeVariantVariable :: TTerm TypeVariant
typeVariantVariable = unitVariant _TypeVariant _TypeVariant_variable
typeVariantWrap :: TTerm TypeVariant
typeVariantWrap = unitVariant _TypeVariant _TypeVariant_wrap
unAccessorPath :: TTerm AccessorPath -> TTerm [TermAccessor]
unAccessorPath path = unwrap _AccessorPath @@ path