hydra-0.13.0: src/main/haskell/Hydra/Dsl/Meta/Variants.hs
-- | Meta-DSL for constructing variant-related terms (field accessors, etc.)
module Hydra.Dsl.Meta.Variants where
import Hydra.Kernel
import Hydra.Dsl.Meta.Phantoms
import Hydra.Variants
import qualified Data.Map as M
import qualified Data.Maybe as Y
eliminationVariant :: EliminationVariant -> TTerm EliminationVariant
eliminationVariant v = injectUnit _EliminationVariant $ case v of
EliminationVariantRecord -> _EliminationVariant_record
EliminationVariantUnion -> _EliminationVariant_union
EliminationVariantWrap -> _EliminationVariant_wrap
eliminationVariantRecord :: TTerm EliminationVariant
eliminationVariantRecord = injectUnit _EliminationVariant _EliminationVariant_record
eliminationVariantUnion :: TTerm EliminationVariant
eliminationVariantUnion = injectUnit _EliminationVariant _EliminationVariant_union
eliminationVariantWrap :: TTerm EliminationVariant
eliminationVariantWrap = injectUnit _EliminationVariant _EliminationVariant_wrap
functionVariant :: FunctionVariant -> TTerm FunctionVariant
functionVariant v = injectUnit _FunctionVariant $ case v of
FunctionVariantElimination -> _FunctionVariant_elimination
FunctionVariantLambda -> _FunctionVariant_lambda
FunctionVariantPrimitive -> _FunctionVariant_primitive
functionVariantElimination :: TTerm FunctionVariant
functionVariantElimination = injectUnit _FunctionVariant _FunctionVariant_elimination
functionVariantLambda :: TTerm FunctionVariant
functionVariantLambda = injectUnit _FunctionVariant _FunctionVariant_lambda
functionVariantPrimitive :: TTerm FunctionVariant
functionVariantPrimitive = injectUnit _FunctionVariant _FunctionVariant_primitive
literalVariant :: LiteralVariant -> TTerm LiteralVariant
literalVariant v = injectUnit _LiteralVariant $ case v of
LiteralVariantBinary -> _LiteralVariant_binary
LiteralVariantBoolean -> _LiteralVariant_boolean
LiteralVariantFloat -> _LiteralVariant_float
LiteralVariantInteger -> _LiteralVariant_integer
LiteralVariantString -> _LiteralVariant_string
literalVariantBinary :: TTerm LiteralVariant
literalVariantBinary = injectUnit _LiteralVariant _LiteralVariant_binary
literalVariantBoolean :: TTerm LiteralVariant
literalVariantBoolean = injectUnit _LiteralVariant _LiteralVariant_boolean
literalVariantFloat :: TTerm LiteralVariant
literalVariantFloat = injectUnit _LiteralVariant _LiteralVariant_float
literalVariantInteger :: TTerm LiteralVariant
literalVariantInteger = injectUnit _LiteralVariant _LiteralVariant_integer
literalVariantString :: TTerm LiteralVariant
literalVariantString = injectUnit _LiteralVariant _LiteralVariant_string
termVariant :: TermVariant -> TTerm TermVariant
termVariant v = injectUnit _TermVariant $ case v of
TermVariantAnnotated -> _TermVariant_annotated
TermVariantApplication -> _TermVariant_application
TermVariantEither -> _TermVariant_either
TermVariantFunction -> _TermVariant_function
TermVariantLet -> _TermVariant_let
TermVariantList -> _TermVariant_list
TermVariantLiteral -> _TermVariant_literal
TermVariantMap -> _TermVariant_map
TermVariantMaybe -> _TermVariant_maybe
TermVariantPair -> _TermVariant_pair
TermVariantRecord -> _TermVariant_record
TermVariantSet -> _TermVariant_set
TermVariantTypeLambda -> _TermVariant_typeLambda
TermVariantTypeApplication -> _TermVariant_typeApplication
TermVariantUnion -> _TermVariant_union
TermVariantUnit -> _TermVariant_unit
TermVariantVariable -> _TermVariant_variable
TermVariantWrap -> _TermVariant_wrap
termVariantAnnotated :: TTerm TermVariant
termVariantAnnotated = injectUnit _TermVariant _TermVariant_annotated
termVariantApplication :: TTerm TermVariant
termVariantApplication = injectUnit _TermVariant _TermVariant_application
termVariantEither :: TTerm TermVariant
termVariantEither = injectUnit _TermVariant _TermVariant_either
termVariantFunction :: TTerm TermVariant
termVariantFunction = injectUnit _TermVariant _TermVariant_function
termVariantLet :: TTerm TermVariant
termVariantLet = injectUnit _TermVariant _TermVariant_let
termVariantList :: TTerm TermVariant
termVariantList = injectUnit _TermVariant _TermVariant_list
termVariantLiteral :: TTerm TermVariant
termVariantLiteral = injectUnit _TermVariant _TermVariant_literal
termVariantMap :: TTerm TermVariant
termVariantMap = injectUnit _TermVariant _TermVariant_map
termVariantMaybe :: TTerm TermVariant
termVariantMaybe = injectUnit _TermVariant _TermVariant_maybe
termVariantPair :: TTerm TermVariant
termVariantPair = injectUnit _TermVariant _TermVariant_pair
termVariantRecord :: TTerm TermVariant
termVariantRecord = injectUnit _TermVariant _TermVariant_record
termVariantSet :: TTerm TermVariant
termVariantSet = injectUnit _TermVariant _TermVariant_set
termVariantTypeLambda :: TTerm TermVariant
termVariantTypeLambda = injectUnit _TermVariant _TermVariant_typeLambda
termVariantTypeApplication :: TTerm TermVariant
termVariantTypeApplication = injectUnit _TermVariant _TermVariant_typeApplication
termVariantUnion :: TTerm TermVariant
termVariantUnion = injectUnit _TermVariant _TermVariant_union
termVariantUnit :: TTerm TermVariant
termVariantUnit = injectUnit _TermVariant _TermVariant_unit
termVariantVariable :: TTerm TermVariant
termVariantVariable = injectUnit _TermVariant _TermVariant_variable
termVariantWrap :: TTerm TermVariant
termVariantWrap = injectUnit _TermVariant _TermVariant_wrap
typeVariant :: TypeVariant -> TTerm TypeVariant
typeVariant v = injectUnit _TypeVariant $ case v of
TypeVariantAnnotated -> _TypeVariant_annotated
TypeVariantApplication -> _TypeVariant_application
TypeVariantEither -> _TypeVariant_either
TypeVariantFunction -> _TypeVariant_function
TypeVariantForall -> _TypeVariant_forall
TypeVariantList -> _TypeVariant_list
TypeVariantLiteral -> _TypeVariant_literal
TypeVariantMap -> _TypeVariant_map
TypeVariantMaybe -> _TypeVariant_maybe
TypeVariantPair -> _TypeVariant_pair
TypeVariantRecord -> _TypeVariant_record
TypeVariantSet -> _TypeVariant_set
TypeVariantUnion -> _TypeVariant_union
TypeVariantUnit -> _TypeVariant_unit
TypeVariantVariable -> _TypeVariant_variable
TypeVariantWrap -> _TypeVariant_wrap
typeVariantAnnotated :: TTerm TypeVariant
typeVariantAnnotated = injectUnit _TypeVariant _TypeVariant_annotated
typeVariantApplication :: TTerm TypeVariant
typeVariantApplication = injectUnit _TypeVariant _TypeVariant_application
typeVariantEither :: TTerm TypeVariant
typeVariantEither = injectUnit _TypeVariant _TypeVariant_either
typeVariantFunction :: TTerm TypeVariant
typeVariantFunction = injectUnit _TypeVariant _TypeVariant_function
typeVariantForall :: TTerm TypeVariant
typeVariantForall = injectUnit _TypeVariant _TypeVariant_forall
typeVariantList :: TTerm TypeVariant
typeVariantList = injectUnit _TypeVariant _TypeVariant_list
typeVariantLiteral :: TTerm TypeVariant
typeVariantLiteral = injectUnit _TypeVariant _TypeVariant_literal
typeVariantMap :: TTerm TypeVariant
typeVariantMap = injectUnit _TypeVariant _TypeVariant_map
typeVariantMaybe :: TTerm TypeVariant
typeVariantMaybe = injectUnit _TypeVariant _TypeVariant_maybe
typeVariantPair :: TTerm TypeVariant
typeVariantPair = injectUnit _TypeVariant _TypeVariant_pair
typeVariantRecord :: TTerm TypeVariant
typeVariantRecord = injectUnit _TypeVariant _TypeVariant_record
typeVariantSet :: TTerm TypeVariant
typeVariantSet = injectUnit _TypeVariant _TypeVariant_set
typeVariantUnion :: TTerm TypeVariant
typeVariantUnion = injectUnit _TypeVariant _TypeVariant_union
typeVariantUnit :: TTerm TypeVariant
typeVariantUnit = injectUnit _TypeVariant _TypeVariant_unit
typeVariantVariable :: TTerm TypeVariant
typeVariantVariable = injectUnit _TypeVariant _TypeVariant_variable
typeVariantWrap :: TTerm TypeVariant
typeVariantWrap = injectUnit _TypeVariant _TypeVariant_wrap