packages feed

hydra-0.14.0: src/gen-main/haskell/Hydra/Encode/Variants.hs

-- Note: this is an automatically generated file. Do not edit.

-- | Term encoders for hydra.variants

module Hydra.Encode.Variants where

import qualified Hydra.Core as Core
import qualified Hydra.Variants as Variants
import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)
import qualified Data.ByteString as B
import qualified Data.Int as I
import qualified Data.List as L
import qualified Data.Map as M
import qualified Data.Set as S

eliminationVariant :: Variants.EliminationVariant -> Core.Term
eliminationVariant x =
    case x of
      Variants.EliminationVariantRecord -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.EliminationVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "record"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.EliminationVariantUnion -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.EliminationVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "union"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.EliminationVariantWrap -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.EliminationVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "wrap"),
          Core.fieldTerm = Core.TermUnit}})

functionVariant :: Variants.FunctionVariant -> Core.Term
functionVariant x =
    case x of
      Variants.FunctionVariantElimination -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.FunctionVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "elimination"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.FunctionVariantLambda -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.FunctionVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "lambda"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.FunctionVariantPrimitive -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.FunctionVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "primitive"),
          Core.fieldTerm = Core.TermUnit}})

literalVariant :: Variants.LiteralVariant -> Core.Term
literalVariant x =
    case x of
      Variants.LiteralVariantBinary -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.LiteralVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "binary"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.LiteralVariantBoolean -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.LiteralVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "boolean"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.LiteralVariantFloat -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.LiteralVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "float"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.LiteralVariantInteger -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.LiteralVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "integer"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.LiteralVariantString -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.LiteralVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "string"),
          Core.fieldTerm = Core.TermUnit}})

termVariant :: Variants.TermVariant -> Core.Term
termVariant x =
    case x of
      Variants.TermVariantAnnotated -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TermVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "annotated"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TermVariantApplication -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TermVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "application"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TermVariantEither -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TermVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "either"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TermVariantFunction -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TermVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "function"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TermVariantLet -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TermVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "let"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TermVariantList -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TermVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "list"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TermVariantLiteral -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TermVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "literal"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TermVariantMap -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TermVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "map"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TermVariantMaybe -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TermVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "maybe"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TermVariantPair -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TermVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "pair"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TermVariantRecord -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TermVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "record"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TermVariantSet -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TermVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "set"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TermVariantTypeApplication -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TermVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "typeApplication"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TermVariantTypeLambda -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TermVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "typeLambda"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TermVariantUnion -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TermVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "union"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TermVariantUnit -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TermVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "unit"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TermVariantVariable -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TermVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TermVariantWrap -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TermVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "wrap"),
          Core.fieldTerm = Core.TermUnit}})

typeVariant :: Variants.TypeVariant -> Core.Term
typeVariant x =
    case x of
      Variants.TypeVariantAnnotated -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TypeVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "annotated"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TypeVariantApplication -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TypeVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "application"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TypeVariantEither -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TypeVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "either"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TypeVariantForall -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TypeVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "forall"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TypeVariantFunction -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TypeVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "function"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TypeVariantList -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TypeVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "list"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TypeVariantLiteral -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TypeVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "literal"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TypeVariantMap -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TypeVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "map"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TypeVariantMaybe -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TypeVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "maybe"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TypeVariantPair -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TypeVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "pair"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TypeVariantRecord -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TypeVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "record"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TypeVariantSet -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TypeVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "set"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TypeVariantUnion -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TypeVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "union"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TypeVariantUnit -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TypeVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "unit"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TypeVariantVariable -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TypeVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TypeVariantVoid -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TypeVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "void"),
          Core.fieldTerm = Core.TermUnit}})
      Variants.TypeVariantWrap -> Core.TermUnion (Core.Injection {
        Core.injectionTypeName = (Core.Name "hydra.variants.TypeVariant"),
        Core.injectionField = Core.Field {
          Core.fieldName = (Core.Name "wrap"),
          Core.fieldTerm = Core.TermUnit}})