packages feed

hydra-haskell 0.17.7 → 0.18.0

raw patch · 14 files changed

+5494/−5400 lines, 14 filesdep ~hydra-kernelPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: hydra-kernel

API changes (from Hackage documentation)

- Hydra.Dsl.Haskell.Environment: haskellModuleMetadata :: TypedTerm Bool -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm HaskellModuleMetadata
- Hydra.Dsl.Haskell.Environment: haskellModuleMetadataHaskellModuleMetadata :: TypedName HaskellModuleMetadata
- Hydra.Dsl.Haskell.Environment: haskellModuleMetadataUsesByteString :: TypedTerm HaskellModuleMetadata -> TypedTerm Bool
- Hydra.Dsl.Haskell.Environment: haskellModuleMetadataUsesInt :: TypedTerm HaskellModuleMetadata -> TypedTerm Bool
- Hydra.Dsl.Haskell.Environment: haskellModuleMetadataUsesMap :: TypedTerm HaskellModuleMetadata -> TypedTerm Bool
- Hydra.Dsl.Haskell.Environment: haskellModuleMetadataUsesSet :: TypedTerm HaskellModuleMetadata -> TypedTerm Bool
- Hydra.Dsl.Haskell.Environment: haskellModuleMetadataUsesVoid :: TypedTerm HaskellModuleMetadata -> TypedTerm Bool
- Hydra.Dsl.Haskell.Environment: haskellModuleMetadataWithUsesByteString :: TypedTerm HaskellModuleMetadata -> TypedTerm Bool -> TypedTerm HaskellModuleMetadata
- Hydra.Dsl.Haskell.Environment: haskellModuleMetadataWithUsesInt :: TypedTerm HaskellModuleMetadata -> TypedTerm Bool -> TypedTerm HaskellModuleMetadata
- Hydra.Dsl.Haskell.Environment: haskellModuleMetadataWithUsesMap :: TypedTerm HaskellModuleMetadata -> TypedTerm Bool -> TypedTerm HaskellModuleMetadata
- Hydra.Dsl.Haskell.Environment: haskellModuleMetadataWithUsesSet :: TypedTerm HaskellModuleMetadata -> TypedTerm Bool -> TypedTerm HaskellModuleMetadata
- Hydra.Dsl.Haskell.Environment: haskellModuleMetadataWithUsesVoid :: TypedTerm HaskellModuleMetadata -> TypedTerm Bool -> TypedTerm HaskellModuleMetadata
- Hydra.Dsl.Haskell.Syntax: alternative :: TypedTerm Pattern -> TypedTerm CaseRhs -> TypedTerm (Maybe LocalBindings) -> TypedTerm Alternative
- Hydra.Dsl.Haskell.Syntax: alternativeAlternative :: TypedName Alternative
- Hydra.Dsl.Haskell.Syntax: alternativeBinds :: TypedTerm Alternative -> TypedTerm (Maybe LocalBindings)
- Hydra.Dsl.Haskell.Syntax: alternativePattern :: TypedTerm Alternative -> TypedTerm Pattern
- Hydra.Dsl.Haskell.Syntax: alternativeRhs :: TypedTerm Alternative -> TypedTerm CaseRhs
- Hydra.Dsl.Haskell.Syntax: alternativeWithBinds :: TypedTerm Alternative -> TypedTerm (Maybe LocalBindings) -> TypedTerm Alternative
- Hydra.Dsl.Haskell.Syntax: alternativeWithPattern :: TypedTerm Alternative -> TypedTerm Pattern -> TypedTerm Alternative
- Hydra.Dsl.Haskell.Syntax: alternativeWithRhs :: TypedTerm Alternative -> TypedTerm CaseRhs -> TypedTerm Alternative
- Hydra.Dsl.Haskell.Syntax: applicationDeclarationHead :: TypedTerm DeclarationHead -> TypedTerm Variable -> TypedTerm ApplicationDeclarationHead
- Hydra.Dsl.Haskell.Syntax: applicationDeclarationHeadApplicationDeclarationHead :: TypedName ApplicationDeclarationHead
- Hydra.Dsl.Haskell.Syntax: applicationDeclarationHeadFunction :: TypedTerm ApplicationDeclarationHead -> TypedTerm DeclarationHead
- Hydra.Dsl.Haskell.Syntax: applicationDeclarationHeadOperand :: TypedTerm ApplicationDeclarationHead -> TypedTerm Variable
- Hydra.Dsl.Haskell.Syntax: applicationDeclarationHeadWithFunction :: TypedTerm ApplicationDeclarationHead -> TypedTerm DeclarationHead -> TypedTerm ApplicationDeclarationHead
- Hydra.Dsl.Haskell.Syntax: applicationDeclarationHeadWithOperand :: TypedTerm ApplicationDeclarationHead -> TypedTerm Variable -> TypedTerm ApplicationDeclarationHead
- Hydra.Dsl.Haskell.Syntax: applicationExpression :: TypedTerm Expression -> TypedTerm Expression -> TypedTerm ApplicationExpression
- Hydra.Dsl.Haskell.Syntax: applicationExpressionApplicationExpression :: TypedName ApplicationExpression
- Hydra.Dsl.Haskell.Syntax: applicationExpressionArgument :: TypedTerm ApplicationExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: applicationExpressionFunction :: TypedTerm ApplicationExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: applicationExpressionWithArgument :: TypedTerm ApplicationExpression -> TypedTerm Expression -> TypedTerm ApplicationExpression
- Hydra.Dsl.Haskell.Syntax: applicationExpressionWithFunction :: TypedTerm ApplicationExpression -> TypedTerm Expression -> TypedTerm ApplicationExpression
- Hydra.Dsl.Haskell.Syntax: applicationPattern :: TypedTerm Name -> TypedTerm [Pattern] -> TypedTerm ApplicationPattern
- Hydra.Dsl.Haskell.Syntax: applicationPatternApplicationPattern :: TypedName ApplicationPattern
- Hydra.Dsl.Haskell.Syntax: applicationPatternArgs :: TypedTerm ApplicationPattern -> TypedTerm [Pattern]
- Hydra.Dsl.Haskell.Syntax: applicationPatternName :: TypedTerm ApplicationPattern -> TypedTerm Name
- Hydra.Dsl.Haskell.Syntax: applicationPatternWithArgs :: TypedTerm ApplicationPattern -> TypedTerm [Pattern] -> TypedTerm ApplicationPattern
- Hydra.Dsl.Haskell.Syntax: applicationPatternWithName :: TypedTerm ApplicationPattern -> TypedTerm Name -> TypedTerm ApplicationPattern
- Hydra.Dsl.Haskell.Syntax: applicationType :: TypedTerm Type -> TypedTerm Type -> TypedTerm ApplicationType
- Hydra.Dsl.Haskell.Syntax: applicationTypeApplicationType :: TypedName ApplicationType
- Hydra.Dsl.Haskell.Syntax: applicationTypeArgument :: TypedTerm ApplicationType -> TypedTerm Type
- Hydra.Dsl.Haskell.Syntax: applicationTypeContext :: TypedTerm ApplicationType -> TypedTerm Type
- Hydra.Dsl.Haskell.Syntax: applicationTypeWithArgument :: TypedTerm ApplicationType -> TypedTerm Type -> TypedTerm ApplicationType
- Hydra.Dsl.Haskell.Syntax: applicationTypeWithContext :: TypedTerm ApplicationType -> TypedTerm Type -> TypedTerm ApplicationType
- Hydra.Dsl.Haskell.Syntax: asPattern :: TypedTerm Name -> TypedTerm Pattern -> TypedTerm AsPattern
- Hydra.Dsl.Haskell.Syntax: asPatternAsPattern :: TypedName AsPattern
- Hydra.Dsl.Haskell.Syntax: asPatternInner :: TypedTerm AsPattern -> TypedTerm Pattern
- Hydra.Dsl.Haskell.Syntax: asPatternName :: TypedTerm AsPattern -> TypedTerm Name
- Hydra.Dsl.Haskell.Syntax: asPatternWithInner :: TypedTerm AsPattern -> TypedTerm Pattern -> TypedTerm AsPattern
- Hydra.Dsl.Haskell.Syntax: asPatternWithName :: TypedTerm AsPattern -> TypedTerm Name -> TypedTerm AsPattern
- Hydra.Dsl.Haskell.Syntax: caseExpression :: TypedTerm Expression -> TypedTerm [Alternative] -> TypedTerm CaseExpression
- Hydra.Dsl.Haskell.Syntax: caseExpressionAlternatives :: TypedTerm CaseExpression -> TypedTerm [Alternative]
- Hydra.Dsl.Haskell.Syntax: caseExpressionCase :: TypedTerm CaseExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: caseExpressionCaseExpression :: TypedName CaseExpression
- Hydra.Dsl.Haskell.Syntax: caseExpressionWithAlternatives :: TypedTerm CaseExpression -> TypedTerm [Alternative] -> TypedTerm CaseExpression
- Hydra.Dsl.Haskell.Syntax: caseExpressionWithCase :: TypedTerm CaseExpression -> TypedTerm Expression -> TypedTerm CaseExpression
- Hydra.Dsl.Haskell.Syntax: caseRhs :: TypedTerm Expression -> TypedTerm CaseRhs
- Hydra.Dsl.Haskell.Syntax: caseRhsCaseRhs :: TypedName CaseRhs
- Hydra.Dsl.Haskell.Syntax: classConstraint :: TypedTerm Name -> TypedTerm [Type] -> TypedTerm ClassConstraint
- Hydra.Dsl.Haskell.Syntax: classConstraintClassConstraint :: TypedName ClassConstraint
- Hydra.Dsl.Haskell.Syntax: classConstraintName :: TypedTerm ClassConstraint -> TypedTerm Name
- Hydra.Dsl.Haskell.Syntax: classConstraintTypes :: TypedTerm ClassConstraint -> TypedTerm [Type]
- Hydra.Dsl.Haskell.Syntax: classConstraintWithName :: TypedTerm ClassConstraint -> TypedTerm Name -> TypedTerm ClassConstraint
- Hydra.Dsl.Haskell.Syntax: classConstraintWithTypes :: TypedTerm ClassConstraint -> TypedTerm [Type] -> TypedTerm ClassConstraint
- Hydra.Dsl.Haskell.Syntax: constrainedType :: TypedTerm Constraint -> TypedTerm Type -> TypedTerm ConstrainedType
- Hydra.Dsl.Haskell.Syntax: constrainedTypeConstrainedType :: TypedName ConstrainedType
- Hydra.Dsl.Haskell.Syntax: constrainedTypeCtx :: TypedTerm ConstrainedType -> TypedTerm Constraint
- Hydra.Dsl.Haskell.Syntax: constrainedTypeType :: TypedTerm ConstrainedType -> TypedTerm Type
- Hydra.Dsl.Haskell.Syntax: constrainedTypeWithCtx :: TypedTerm ConstrainedType -> TypedTerm Constraint -> TypedTerm ConstrainedType
- Hydra.Dsl.Haskell.Syntax: constrainedTypeWithType :: TypedTerm ConstrainedType -> TypedTerm Type -> TypedTerm ConstrainedType
- Hydra.Dsl.Haskell.Syntax: constraintClass :: TypedTerm ClassConstraint -> TypedTerm Constraint
- Hydra.Dsl.Haskell.Syntax: constraintConstraint :: TypedName Constraint
- Hydra.Dsl.Haskell.Syntax: constraintTuple :: TypedTerm [Constraint] -> TypedTerm Constraint
- Hydra.Dsl.Haskell.Syntax: constructorConstructor :: TypedName Constructor
- Hydra.Dsl.Haskell.Syntax: constructorOrdinary :: TypedTerm PositionalConstructor -> TypedTerm Constructor
- Hydra.Dsl.Haskell.Syntax: constructorRecord :: TypedTerm RecordConstructor -> TypedTerm Constructor
- Hydra.Dsl.Haskell.Syntax: dataDeclaration :: TypedTerm DataKeyword -> TypedTerm [Constraint] -> TypedTerm DeclarationHead -> TypedTerm [Constructor] -> TypedTerm [DerivingClause] -> TypedTerm (Maybe String) -> TypedTerm DataDeclaration
- Hydra.Dsl.Haskell.Syntax: dataDeclarationComments :: TypedTerm DataDeclaration -> TypedTerm (Maybe String)
- Hydra.Dsl.Haskell.Syntax: dataDeclarationConstructors :: TypedTerm DataDeclaration -> TypedTerm [Constructor]
- Hydra.Dsl.Haskell.Syntax: dataDeclarationContext :: TypedTerm DataDeclaration -> TypedTerm [Constraint]
- Hydra.Dsl.Haskell.Syntax: dataDeclarationDataDeclaration :: TypedName DataDeclaration
- Hydra.Dsl.Haskell.Syntax: dataDeclarationDeriving :: TypedTerm DataDeclaration -> TypedTerm [DerivingClause]
- Hydra.Dsl.Haskell.Syntax: dataDeclarationHead :: TypedTerm DataDeclaration -> TypedTerm DeclarationHead
- Hydra.Dsl.Haskell.Syntax: dataDeclarationKeyword :: TypedTerm DataDeclaration -> TypedTerm DataKeyword
- Hydra.Dsl.Haskell.Syntax: dataDeclarationWithComments :: TypedTerm DataDeclaration -> TypedTerm (Maybe String) -> TypedTerm DataDeclaration
- Hydra.Dsl.Haskell.Syntax: dataDeclarationWithConstructors :: TypedTerm DataDeclaration -> TypedTerm [Constructor] -> TypedTerm DataDeclaration
- Hydra.Dsl.Haskell.Syntax: dataDeclarationWithContext :: TypedTerm DataDeclaration -> TypedTerm [Constraint] -> TypedTerm DataDeclaration
- Hydra.Dsl.Haskell.Syntax: dataDeclarationWithDeriving :: TypedTerm DataDeclaration -> TypedTerm [DerivingClause] -> TypedTerm DataDeclaration
- Hydra.Dsl.Haskell.Syntax: dataDeclarationWithHead :: TypedTerm DataDeclaration -> TypedTerm DeclarationHead -> TypedTerm DataDeclaration
- Hydra.Dsl.Haskell.Syntax: dataDeclarationWithKeyword :: TypedTerm DataDeclaration -> TypedTerm DataKeyword -> TypedTerm DataDeclaration
- Hydra.Dsl.Haskell.Syntax: dataKeywordData :: TypedTerm DataKeyword
- Hydra.Dsl.Haskell.Syntax: dataKeywordDataKeyword :: TypedName DataKeyword
- Hydra.Dsl.Haskell.Syntax: dataKeywordNewtype :: TypedTerm DataKeyword
- Hydra.Dsl.Haskell.Syntax: declarationData :: TypedTerm DataDeclaration -> TypedTerm Declaration
- Hydra.Dsl.Haskell.Syntax: declarationDeclaration :: TypedName Declaration
- Hydra.Dsl.Haskell.Syntax: declarationHeadApplication :: TypedTerm ApplicationDeclarationHead -> TypedTerm DeclarationHead
- Hydra.Dsl.Haskell.Syntax: declarationHeadDeclarationHead :: TypedName DeclarationHead
- Hydra.Dsl.Haskell.Syntax: declarationHeadSimple :: TypedTerm Name -> TypedTerm DeclarationHead
- Hydra.Dsl.Haskell.Syntax: declarationType :: TypedTerm TypeSynonymDeclaration -> TypedTerm Declaration
- Hydra.Dsl.Haskell.Syntax: declarationTypedBinding :: TypedTerm TypedBinding -> TypedTerm Declaration
- Hydra.Dsl.Haskell.Syntax: declarationValueBinding :: TypedTerm ValueBinding -> TypedTerm Declaration
- Hydra.Dsl.Haskell.Syntax: derivingClause :: TypedTerm [Name] -> TypedTerm DerivingClause
- Hydra.Dsl.Haskell.Syntax: derivingClauseDerivingClause :: TypedName DerivingClause
- Hydra.Dsl.Haskell.Syntax: exportDeclaration :: TypedTerm NamedImportExport -> TypedTerm Export
- Hydra.Dsl.Haskell.Syntax: exportExport :: TypedName Export
- Hydra.Dsl.Haskell.Syntax: exportModule :: TypedTerm ModuleName -> TypedTerm Export
- Hydra.Dsl.Haskell.Syntax: expressionApplication :: TypedTerm ApplicationExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: expressionCase :: TypedTerm CaseExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: expressionConstructRecord :: TypedTerm RecordExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: expressionDo :: TypedTerm [Statement] -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: expressionExpression :: TypedName Expression
- Hydra.Dsl.Haskell.Syntax: expressionIf :: TypedTerm IfExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: expressionInfixApplication :: TypedTerm InfixExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: expressionLambda :: TypedTerm LambdaExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: expressionLeftSection :: TypedTerm SectionExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: expressionLet :: TypedTerm LetExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: expressionList :: TypedTerm [Expression] -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: expressionLiteral :: TypedTerm Literal -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: expressionRightSection :: TypedTerm SectionExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: expressionTuple :: TypedTerm [Expression] -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: expressionTypeSignature :: TypedTerm TypedExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: expressionUpdateRecord :: TypedTerm RecordUpdateExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: expressionVariable :: TypedTerm Name -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: field :: TypedTerm Name -> TypedTerm Type -> TypedTerm (Maybe String) -> TypedTerm Field
- Hydra.Dsl.Haskell.Syntax: fieldComments :: TypedTerm Field -> TypedTerm (Maybe String)
- Hydra.Dsl.Haskell.Syntax: fieldField :: TypedName Field
- Hydra.Dsl.Haskell.Syntax: fieldName :: TypedTerm Field -> TypedTerm Name
- Hydra.Dsl.Haskell.Syntax: fieldType :: TypedTerm Field -> TypedTerm Type
- Hydra.Dsl.Haskell.Syntax: fieldUpdate :: TypedTerm Name -> TypedTerm Expression -> TypedTerm FieldUpdate
- Hydra.Dsl.Haskell.Syntax: fieldUpdateFieldUpdate :: TypedName FieldUpdate
- Hydra.Dsl.Haskell.Syntax: fieldUpdateName :: TypedTerm FieldUpdate -> TypedTerm Name
- Hydra.Dsl.Haskell.Syntax: fieldUpdateValue :: TypedTerm FieldUpdate -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: fieldUpdateWithName :: TypedTerm FieldUpdate -> TypedTerm Name -> TypedTerm FieldUpdate
- Hydra.Dsl.Haskell.Syntax: fieldUpdateWithValue :: TypedTerm FieldUpdate -> TypedTerm Expression -> TypedTerm FieldUpdate
- Hydra.Dsl.Haskell.Syntax: fieldWithComments :: TypedTerm Field -> TypedTerm (Maybe String) -> TypedTerm Field
- Hydra.Dsl.Haskell.Syntax: fieldWithName :: TypedTerm Field -> TypedTerm Name -> TypedTerm Field
- Hydra.Dsl.Haskell.Syntax: fieldWithType :: TypedTerm Field -> TypedTerm Type -> TypedTerm Field
- Hydra.Dsl.Haskell.Syntax: functionType :: TypedTerm Type -> TypedTerm Type -> TypedTerm FunctionType
- Hydra.Dsl.Haskell.Syntax: functionTypeCodomain :: TypedTerm FunctionType -> TypedTerm Type
- Hydra.Dsl.Haskell.Syntax: functionTypeDomain :: TypedTerm FunctionType -> TypedTerm Type
- Hydra.Dsl.Haskell.Syntax: functionTypeFunctionType :: TypedName FunctionType
- Hydra.Dsl.Haskell.Syntax: functionTypeWithCodomain :: TypedTerm FunctionType -> TypedTerm Type -> TypedTerm FunctionType
- Hydra.Dsl.Haskell.Syntax: functionTypeWithDomain :: TypedTerm FunctionType -> TypedTerm Type -> TypedTerm FunctionType
- Hydra.Dsl.Haskell.Syntax: ifExpression :: TypedTerm Expression -> TypedTerm Expression -> TypedTerm Expression -> TypedTerm IfExpression
- Hydra.Dsl.Haskell.Syntax: ifExpressionCondition :: TypedTerm IfExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: ifExpressionElse :: TypedTerm IfExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: ifExpressionIfExpression :: TypedName IfExpression
- Hydra.Dsl.Haskell.Syntax: ifExpressionThen :: TypedTerm IfExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: ifExpressionWithCondition :: TypedTerm IfExpression -> TypedTerm Expression -> TypedTerm IfExpression
- Hydra.Dsl.Haskell.Syntax: ifExpressionWithElse :: TypedTerm IfExpression -> TypedTerm Expression -> TypedTerm IfExpression
- Hydra.Dsl.Haskell.Syntax: ifExpressionWithThen :: TypedTerm IfExpression -> TypedTerm Expression -> TypedTerm IfExpression
- Hydra.Dsl.Haskell.Syntax: importAs :: TypedTerm Import -> TypedTerm (Maybe ModuleName)
- Hydra.Dsl.Haskell.Syntax: importExportSubspecAll :: TypedTerm ImportExportSubspec
- Hydra.Dsl.Haskell.Syntax: importExportSubspecImportExportSubspec :: TypedName ImportExportSubspec
- Hydra.Dsl.Haskell.Syntax: importExportSubspecList :: TypedTerm [Name] -> TypedTerm ImportExportSubspec
- Hydra.Dsl.Haskell.Syntax: importImport :: TypedName Import
- Hydra.Dsl.Haskell.Syntax: importModifierImportModifier :: TypedName ImportModifier
- Hydra.Dsl.Haskell.Syntax: importModifierPattern :: TypedTerm ImportModifier
- Hydra.Dsl.Haskell.Syntax: importModifierType :: TypedTerm ImportModifier
- Hydra.Dsl.Haskell.Syntax: importModule :: TypedTerm Import -> TypedTerm ModuleName
- Hydra.Dsl.Haskell.Syntax: importQualified :: TypedTerm Import -> TypedTerm Bool
- Hydra.Dsl.Haskell.Syntax: importSpec :: TypedTerm Import -> TypedTerm (Maybe ImportSpec)
- Hydra.Dsl.Haskell.Syntax: importSpecHiding :: TypedTerm [NamedImportExport] -> TypedTerm ImportSpec
- Hydra.Dsl.Haskell.Syntax: importSpecImportSpec :: TypedName ImportSpec
- Hydra.Dsl.Haskell.Syntax: importSpecList :: TypedTerm [NamedImportExport] -> TypedTerm ImportSpec
- Hydra.Dsl.Haskell.Syntax: importWithAs :: TypedTerm Import -> TypedTerm (Maybe ModuleName) -> TypedTerm Import
- Hydra.Dsl.Haskell.Syntax: importWithModule :: TypedTerm Import -> TypedTerm ModuleName -> TypedTerm Import
- Hydra.Dsl.Haskell.Syntax: importWithQualified :: TypedTerm Import -> TypedTerm Bool -> TypedTerm Import
- Hydra.Dsl.Haskell.Syntax: importWithSpec :: TypedTerm Import -> TypedTerm (Maybe ImportSpec) -> TypedTerm Import
- Hydra.Dsl.Haskell.Syntax: import_ :: TypedTerm Bool -> TypedTerm ModuleName -> TypedTerm (Maybe ModuleName) -> TypedTerm (Maybe ImportSpec) -> TypedTerm Import
- Hydra.Dsl.Haskell.Syntax: infixExpression :: TypedTerm Expression -> TypedTerm Operator -> TypedTerm Expression -> TypedTerm InfixExpression
- Hydra.Dsl.Haskell.Syntax: infixExpressionInfixExpression :: TypedName InfixExpression
- Hydra.Dsl.Haskell.Syntax: infixExpressionLhs :: TypedTerm InfixExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: infixExpressionOperator :: TypedTerm InfixExpression -> TypedTerm Operator
- Hydra.Dsl.Haskell.Syntax: infixExpressionRhs :: TypedTerm InfixExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: infixExpressionWithLhs :: TypedTerm InfixExpression -> TypedTerm Expression -> TypedTerm InfixExpression
- Hydra.Dsl.Haskell.Syntax: infixExpressionWithOperator :: TypedTerm InfixExpression -> TypedTerm Operator -> TypedTerm InfixExpression
- Hydra.Dsl.Haskell.Syntax: infixExpressionWithRhs :: TypedTerm InfixExpression -> TypedTerm Expression -> TypedTerm InfixExpression
- Hydra.Dsl.Haskell.Syntax: infixType :: TypedTerm Type -> TypedTerm Operator -> TypedTerm Type -> TypedTerm InfixType
- Hydra.Dsl.Haskell.Syntax: infixTypeInfixType :: TypedName InfixType
- Hydra.Dsl.Haskell.Syntax: infixTypeLhs :: TypedTerm InfixType -> TypedTerm Type
- Hydra.Dsl.Haskell.Syntax: infixTypeOperator :: TypedTerm InfixType -> TypedTerm Operator
- Hydra.Dsl.Haskell.Syntax: infixTypeRhs :: TypedTerm InfixType -> TypedTerm Type
- Hydra.Dsl.Haskell.Syntax: infixTypeWithLhs :: TypedTerm InfixType -> TypedTerm Type -> TypedTerm InfixType
- Hydra.Dsl.Haskell.Syntax: infixTypeWithOperator :: TypedTerm InfixType -> TypedTerm Operator -> TypedTerm InfixType
- Hydra.Dsl.Haskell.Syntax: infixTypeWithRhs :: TypedTerm InfixType -> TypedTerm Type -> TypedTerm InfixType
- Hydra.Dsl.Haskell.Syntax: lambdaExpression :: TypedTerm [Pattern] -> TypedTerm Expression -> TypedTerm LambdaExpression
- Hydra.Dsl.Haskell.Syntax: lambdaExpressionBindings :: TypedTerm LambdaExpression -> TypedTerm [Pattern]
- Hydra.Dsl.Haskell.Syntax: lambdaExpressionInner :: TypedTerm LambdaExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: lambdaExpressionLambdaExpression :: TypedName LambdaExpression
- Hydra.Dsl.Haskell.Syntax: lambdaExpressionWithBindings :: TypedTerm LambdaExpression -> TypedTerm [Pattern] -> TypedTerm LambdaExpression
- Hydra.Dsl.Haskell.Syntax: lambdaExpressionWithInner :: TypedTerm LambdaExpression -> TypedTerm Expression -> TypedTerm LambdaExpression
- Hydra.Dsl.Haskell.Syntax: letExpression :: TypedTerm [LocalBinding] -> TypedTerm Expression -> TypedTerm LetExpression
- Hydra.Dsl.Haskell.Syntax: letExpressionBindings :: TypedTerm LetExpression -> TypedTerm [LocalBinding]
- Hydra.Dsl.Haskell.Syntax: letExpressionInner :: TypedTerm LetExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: letExpressionLetExpression :: TypedName LetExpression
- Hydra.Dsl.Haskell.Syntax: letExpressionWithBindings :: TypedTerm LetExpression -> TypedTerm [LocalBinding] -> TypedTerm LetExpression
- Hydra.Dsl.Haskell.Syntax: letExpressionWithInner :: TypedTerm LetExpression -> TypedTerm Expression -> TypedTerm LetExpression
- Hydra.Dsl.Haskell.Syntax: literalChar :: TypedTerm Int -> TypedTerm Literal
- Hydra.Dsl.Haskell.Syntax: literalDouble :: TypedTerm Double -> TypedTerm Literal
- Hydra.Dsl.Haskell.Syntax: literalFloat :: TypedTerm Float -> TypedTerm Literal
- Hydra.Dsl.Haskell.Syntax: literalInt :: TypedTerm Int -> TypedTerm Literal
- Hydra.Dsl.Haskell.Syntax: literalInteger :: TypedTerm Integer -> TypedTerm Literal
- Hydra.Dsl.Haskell.Syntax: literalLiteral :: TypedName Literal
- Hydra.Dsl.Haskell.Syntax: literalString :: TypedTerm String -> TypedTerm Literal
- Hydra.Dsl.Haskell.Syntax: localBindingLocalBinding :: TypedName LocalBinding
- Hydra.Dsl.Haskell.Syntax: localBindingSignature :: TypedTerm TypeSignature -> TypedTerm LocalBinding
- Hydra.Dsl.Haskell.Syntax: localBindingValue :: TypedTerm ValueBinding -> TypedTerm LocalBinding
- Hydra.Dsl.Haskell.Syntax: localBindings :: TypedTerm [LocalBinding] -> TypedTerm LocalBindings
- Hydra.Dsl.Haskell.Syntax: localBindingsLocalBindings :: TypedName LocalBindings
- Hydra.Dsl.Haskell.Syntax: moduleDeclarations :: TypedTerm Module -> TypedTerm [Declaration]
- Hydra.Dsl.Haskell.Syntax: moduleHead :: TypedTerm Module -> TypedTerm (Maybe ModuleHead)
- Hydra.Dsl.Haskell.Syntax: moduleHead2 :: TypedTerm (Maybe String) -> TypedTerm ModuleName -> TypedTerm [Export] -> TypedTerm ModuleHead
- Hydra.Dsl.Haskell.Syntax: moduleHeadComments :: TypedTerm ModuleHead -> TypedTerm (Maybe String)
- Hydra.Dsl.Haskell.Syntax: moduleHeadExports :: TypedTerm ModuleHead -> TypedTerm [Export]
- Hydra.Dsl.Haskell.Syntax: moduleHeadModuleHead :: TypedName ModuleHead
- Hydra.Dsl.Haskell.Syntax: moduleHeadName :: TypedTerm ModuleHead -> TypedTerm ModuleName
- Hydra.Dsl.Haskell.Syntax: moduleHeadWithComments :: TypedTerm ModuleHead -> TypedTerm (Maybe String) -> TypedTerm ModuleHead
- Hydra.Dsl.Haskell.Syntax: moduleHeadWithExports :: TypedTerm ModuleHead -> TypedTerm [Export] -> TypedTerm ModuleHead
- Hydra.Dsl.Haskell.Syntax: moduleHeadWithName :: TypedTerm ModuleHead -> TypedTerm ModuleName -> TypedTerm ModuleHead
- Hydra.Dsl.Haskell.Syntax: moduleImports :: TypedTerm Module -> TypedTerm [Import]
- Hydra.Dsl.Haskell.Syntax: moduleModule :: TypedName Module
- Hydra.Dsl.Haskell.Syntax: moduleName :: TypedTerm String -> TypedTerm ModuleName
- Hydra.Dsl.Haskell.Syntax: moduleNameModuleName :: TypedName ModuleName
- Hydra.Dsl.Haskell.Syntax: moduleWithDeclarations :: TypedTerm Module -> TypedTerm [Declaration] -> TypedTerm Module
- Hydra.Dsl.Haskell.Syntax: moduleWithHead :: TypedTerm Module -> TypedTerm (Maybe ModuleHead) -> TypedTerm Module
- Hydra.Dsl.Haskell.Syntax: moduleWithImports :: TypedTerm Module -> TypedTerm [Import] -> TypedTerm Module
- Hydra.Dsl.Haskell.Syntax: module_ :: TypedTerm (Maybe ModuleHead) -> TypedTerm [Import] -> TypedTerm [Declaration] -> TypedTerm Module
- Hydra.Dsl.Haskell.Syntax: nameImplicit :: TypedTerm QualifiedName -> TypedTerm Name
- Hydra.Dsl.Haskell.Syntax: nameName :: TypedName Name
- Hydra.Dsl.Haskell.Syntax: nameNormal :: TypedTerm QualifiedName -> TypedTerm Name
- Hydra.Dsl.Haskell.Syntax: namePart :: TypedTerm String -> TypedTerm NamePart
- Hydra.Dsl.Haskell.Syntax: namePartNamePart :: TypedName NamePart
- Hydra.Dsl.Haskell.Syntax: namedImportExport :: TypedTerm (Maybe ImportModifier) -> TypedTerm Name -> TypedTerm (Maybe ImportExportSubspec) -> TypedTerm NamedImportExport
- Hydra.Dsl.Haskell.Syntax: namedImportExportModifier :: TypedTerm NamedImportExport -> TypedTerm (Maybe ImportModifier)
- Hydra.Dsl.Haskell.Syntax: namedImportExportName :: TypedTerm NamedImportExport -> TypedTerm Name
- Hydra.Dsl.Haskell.Syntax: namedImportExportNamedImportExport :: TypedName NamedImportExport
- Hydra.Dsl.Haskell.Syntax: namedImportExportSubspec :: TypedTerm NamedImportExport -> TypedTerm (Maybe ImportExportSubspec)
- Hydra.Dsl.Haskell.Syntax: namedImportExportWithModifier :: TypedTerm NamedImportExport -> TypedTerm (Maybe ImportModifier) -> TypedTerm NamedImportExport
- Hydra.Dsl.Haskell.Syntax: namedImportExportWithName :: TypedTerm NamedImportExport -> TypedTerm Name -> TypedTerm NamedImportExport
- Hydra.Dsl.Haskell.Syntax: namedImportExportWithSubspec :: TypedTerm NamedImportExport -> TypedTerm (Maybe ImportExportSubspec) -> TypedTerm NamedImportExport
- Hydra.Dsl.Haskell.Syntax: operatorBacktick :: TypedTerm QualifiedName -> TypedTerm Operator
- Hydra.Dsl.Haskell.Syntax: operatorNormal :: TypedTerm QualifiedName -> TypedTerm Operator
- Hydra.Dsl.Haskell.Syntax: operatorOperator :: TypedName Operator
- Hydra.Dsl.Haskell.Syntax: patternApplication :: TypedTerm ApplicationPattern -> TypedTerm Pattern
- Hydra.Dsl.Haskell.Syntax: patternAs :: TypedTerm AsPattern -> TypedTerm Pattern
- Hydra.Dsl.Haskell.Syntax: patternField :: TypedTerm Name -> TypedTerm Pattern -> TypedTerm PatternField
- Hydra.Dsl.Haskell.Syntax: patternFieldName :: TypedTerm PatternField -> TypedTerm Name
- Hydra.Dsl.Haskell.Syntax: patternFieldPattern :: TypedTerm PatternField -> TypedTerm Pattern
- Hydra.Dsl.Haskell.Syntax: patternFieldPatternField :: TypedName PatternField
- Hydra.Dsl.Haskell.Syntax: patternFieldWithName :: TypedTerm PatternField -> TypedTerm Name -> TypedTerm PatternField
- Hydra.Dsl.Haskell.Syntax: patternFieldWithPattern :: TypedTerm PatternField -> TypedTerm Pattern -> TypedTerm PatternField
- Hydra.Dsl.Haskell.Syntax: patternList :: TypedTerm [Pattern] -> TypedTerm Pattern
- Hydra.Dsl.Haskell.Syntax: patternLiteral :: TypedTerm Literal -> TypedTerm Pattern
- Hydra.Dsl.Haskell.Syntax: patternName :: TypedTerm Name -> TypedTerm Pattern
- Hydra.Dsl.Haskell.Syntax: patternPattern :: TypedName Pattern
- Hydra.Dsl.Haskell.Syntax: patternRecord :: TypedTerm RecordPattern -> TypedTerm Pattern
- Hydra.Dsl.Haskell.Syntax: patternTuple :: TypedTerm [Pattern] -> TypedTerm Pattern
- Hydra.Dsl.Haskell.Syntax: patternTyped :: TypedTerm TypedPattern -> TypedTerm Pattern
- Hydra.Dsl.Haskell.Syntax: patternWildcard :: TypedTerm Pattern
- Hydra.Dsl.Haskell.Syntax: positionalConstructor :: TypedTerm Name -> TypedTerm [Type] -> TypedTerm (Maybe String) -> TypedTerm PositionalConstructor
- Hydra.Dsl.Haskell.Syntax: positionalConstructorComments :: TypedTerm PositionalConstructor -> TypedTerm (Maybe String)
- Hydra.Dsl.Haskell.Syntax: positionalConstructorFields :: TypedTerm PositionalConstructor -> TypedTerm [Type]
- Hydra.Dsl.Haskell.Syntax: positionalConstructorName :: TypedTerm PositionalConstructor -> TypedTerm Name
- Hydra.Dsl.Haskell.Syntax: positionalConstructorPositionalConstructor :: TypedName PositionalConstructor
- Hydra.Dsl.Haskell.Syntax: positionalConstructorWithComments :: TypedTerm PositionalConstructor -> TypedTerm (Maybe String) -> TypedTerm PositionalConstructor
- Hydra.Dsl.Haskell.Syntax: positionalConstructorWithFields :: TypedTerm PositionalConstructor -> TypedTerm [Type] -> TypedTerm PositionalConstructor
- Hydra.Dsl.Haskell.Syntax: positionalConstructorWithName :: TypedTerm PositionalConstructor -> TypedTerm Name -> TypedTerm PositionalConstructor
- Hydra.Dsl.Haskell.Syntax: qualifiedName :: TypedTerm [NamePart] -> TypedTerm NamePart -> TypedTerm QualifiedName
- Hydra.Dsl.Haskell.Syntax: qualifiedNameQualifiedName :: TypedName QualifiedName
- Hydra.Dsl.Haskell.Syntax: qualifiedNameQualifiers :: TypedTerm QualifiedName -> TypedTerm [NamePart]
- Hydra.Dsl.Haskell.Syntax: qualifiedNameUnqualified :: TypedTerm QualifiedName -> TypedTerm NamePart
- Hydra.Dsl.Haskell.Syntax: qualifiedNameWithQualifiers :: TypedTerm QualifiedName -> TypedTerm [NamePart] -> TypedTerm QualifiedName
- Hydra.Dsl.Haskell.Syntax: qualifiedNameWithUnqualified :: TypedTerm QualifiedName -> TypedTerm NamePart -> TypedTerm QualifiedName
- Hydra.Dsl.Haskell.Syntax: recordConstructor :: TypedTerm Name -> TypedTerm [Field] -> TypedTerm (Maybe String) -> TypedTerm RecordConstructor
- Hydra.Dsl.Haskell.Syntax: recordConstructorComments :: TypedTerm RecordConstructor -> TypedTerm (Maybe String)
- Hydra.Dsl.Haskell.Syntax: recordConstructorFields :: TypedTerm RecordConstructor -> TypedTerm [Field]
- Hydra.Dsl.Haskell.Syntax: recordConstructorName :: TypedTerm RecordConstructor -> TypedTerm Name
- Hydra.Dsl.Haskell.Syntax: recordConstructorRecordConstructor :: TypedName RecordConstructor
- Hydra.Dsl.Haskell.Syntax: recordConstructorWithComments :: TypedTerm RecordConstructor -> TypedTerm (Maybe String) -> TypedTerm RecordConstructor
- Hydra.Dsl.Haskell.Syntax: recordConstructorWithFields :: TypedTerm RecordConstructor -> TypedTerm [Field] -> TypedTerm RecordConstructor
- Hydra.Dsl.Haskell.Syntax: recordConstructorWithName :: TypedTerm RecordConstructor -> TypedTerm Name -> TypedTerm RecordConstructor
- Hydra.Dsl.Haskell.Syntax: recordExpression :: TypedTerm Name -> TypedTerm [FieldUpdate] -> TypedTerm RecordExpression
- Hydra.Dsl.Haskell.Syntax: recordExpressionFields :: TypedTerm RecordExpression -> TypedTerm [FieldUpdate]
- Hydra.Dsl.Haskell.Syntax: recordExpressionName :: TypedTerm RecordExpression -> TypedTerm Name
- Hydra.Dsl.Haskell.Syntax: recordExpressionRecordExpression :: TypedName RecordExpression
- Hydra.Dsl.Haskell.Syntax: recordExpressionWithFields :: TypedTerm RecordExpression -> TypedTerm [FieldUpdate] -> TypedTerm RecordExpression
- Hydra.Dsl.Haskell.Syntax: recordExpressionWithName :: TypedTerm RecordExpression -> TypedTerm Name -> TypedTerm RecordExpression
- Hydra.Dsl.Haskell.Syntax: recordPattern :: TypedTerm Name -> TypedTerm [PatternField] -> TypedTerm RecordPattern
- Hydra.Dsl.Haskell.Syntax: recordPatternFields :: TypedTerm RecordPattern -> TypedTerm [PatternField]
- Hydra.Dsl.Haskell.Syntax: recordPatternName :: TypedTerm RecordPattern -> TypedTerm Name
- Hydra.Dsl.Haskell.Syntax: recordPatternRecordPattern :: TypedName RecordPattern
- Hydra.Dsl.Haskell.Syntax: recordPatternWithFields :: TypedTerm RecordPattern -> TypedTerm [PatternField] -> TypedTerm RecordPattern
- Hydra.Dsl.Haskell.Syntax: recordPatternWithName :: TypedTerm RecordPattern -> TypedTerm Name -> TypedTerm RecordPattern
- Hydra.Dsl.Haskell.Syntax: recordUpdateExpression :: TypedTerm Expression -> TypedTerm [FieldUpdate] -> TypedTerm RecordUpdateExpression
- Hydra.Dsl.Haskell.Syntax: recordUpdateExpressionFields :: TypedTerm RecordUpdateExpression -> TypedTerm [FieldUpdate]
- Hydra.Dsl.Haskell.Syntax: recordUpdateExpressionInner :: TypedTerm RecordUpdateExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: recordUpdateExpressionRecordUpdateExpression :: TypedName RecordUpdateExpression
- Hydra.Dsl.Haskell.Syntax: recordUpdateExpressionWithFields :: TypedTerm RecordUpdateExpression -> TypedTerm [FieldUpdate] -> TypedTerm RecordUpdateExpression
- Hydra.Dsl.Haskell.Syntax: recordUpdateExpressionWithInner :: TypedTerm RecordUpdateExpression -> TypedTerm Expression -> TypedTerm RecordUpdateExpression
- Hydra.Dsl.Haskell.Syntax: rightHandSide :: TypedTerm Expression -> TypedTerm RightHandSide
- Hydra.Dsl.Haskell.Syntax: rightHandSideRightHandSide :: TypedName RightHandSide
- Hydra.Dsl.Haskell.Syntax: sectionExpression :: TypedTerm Operator -> TypedTerm Expression -> TypedTerm SectionExpression
- Hydra.Dsl.Haskell.Syntax: sectionExpressionExpression :: TypedTerm SectionExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: sectionExpressionOperator :: TypedTerm SectionExpression -> TypedTerm Operator
- Hydra.Dsl.Haskell.Syntax: sectionExpressionSectionExpression :: TypedName SectionExpression
- Hydra.Dsl.Haskell.Syntax: sectionExpressionWithExpression :: TypedTerm SectionExpression -> TypedTerm Expression -> TypedTerm SectionExpression
- Hydra.Dsl.Haskell.Syntax: sectionExpressionWithOperator :: TypedTerm SectionExpression -> TypedTerm Operator -> TypedTerm SectionExpression
- Hydra.Dsl.Haskell.Syntax: simpleValueBinding :: TypedTerm Pattern -> TypedTerm RightHandSide -> TypedTerm (Maybe LocalBindings) -> TypedTerm (Maybe String) -> TypedTerm SimpleValueBinding
- Hydra.Dsl.Haskell.Syntax: simpleValueBindingComments :: TypedTerm SimpleValueBinding -> TypedTerm (Maybe String)
- Hydra.Dsl.Haskell.Syntax: simpleValueBindingLocalBindings :: TypedTerm SimpleValueBinding -> TypedTerm (Maybe LocalBindings)
- Hydra.Dsl.Haskell.Syntax: simpleValueBindingPattern :: TypedTerm SimpleValueBinding -> TypedTerm Pattern
- Hydra.Dsl.Haskell.Syntax: simpleValueBindingRhs :: TypedTerm SimpleValueBinding -> TypedTerm RightHandSide
- Hydra.Dsl.Haskell.Syntax: simpleValueBindingSimpleValueBinding :: TypedName SimpleValueBinding
- Hydra.Dsl.Haskell.Syntax: simpleValueBindingWithComments :: TypedTerm SimpleValueBinding -> TypedTerm (Maybe String) -> TypedTerm SimpleValueBinding
- Hydra.Dsl.Haskell.Syntax: simpleValueBindingWithLocalBindings :: TypedTerm SimpleValueBinding -> TypedTerm (Maybe LocalBindings) -> TypedTerm SimpleValueBinding
- Hydra.Dsl.Haskell.Syntax: simpleValueBindingWithPattern :: TypedTerm SimpleValueBinding -> TypedTerm Pattern -> TypedTerm SimpleValueBinding
- Hydra.Dsl.Haskell.Syntax: simpleValueBindingWithRhs :: TypedTerm SimpleValueBinding -> TypedTerm RightHandSide -> TypedTerm SimpleValueBinding
- Hydra.Dsl.Haskell.Syntax: statement :: TypedTerm Expression -> TypedTerm Statement
- Hydra.Dsl.Haskell.Syntax: statementStatement :: TypedName Statement
- Hydra.Dsl.Haskell.Syntax: typeApplication :: TypedTerm ApplicationType -> TypedTerm Type
- Hydra.Dsl.Haskell.Syntax: typeCtx :: TypedTerm ConstrainedType -> TypedTerm Type
- Hydra.Dsl.Haskell.Syntax: typeFunction :: TypedTerm FunctionType -> TypedTerm Type
- Hydra.Dsl.Haskell.Syntax: typeInfix :: TypedTerm InfixType -> TypedTerm Type
- Hydra.Dsl.Haskell.Syntax: typeList :: TypedTerm Type -> TypedTerm Type
- Hydra.Dsl.Haskell.Syntax: typeSignature :: TypedTerm Name -> TypedTerm Type -> TypedTerm TypeSignature
- Hydra.Dsl.Haskell.Syntax: typeSignatureName :: TypedTerm TypeSignature -> TypedTerm Name
- Hydra.Dsl.Haskell.Syntax: typeSignatureType :: TypedTerm TypeSignature -> TypedTerm Type
- Hydra.Dsl.Haskell.Syntax: typeSignatureTypeSignature :: TypedName TypeSignature
- Hydra.Dsl.Haskell.Syntax: typeSignatureWithName :: TypedTerm TypeSignature -> TypedTerm Name -> TypedTerm TypeSignature
- Hydra.Dsl.Haskell.Syntax: typeSignatureWithType :: TypedTerm TypeSignature -> TypedTerm Type -> TypedTerm TypeSignature
- Hydra.Dsl.Haskell.Syntax: typeSynonymDeclaration :: TypedTerm DeclarationHead -> TypedTerm Type -> TypedTerm (Maybe String) -> TypedTerm TypeSynonymDeclaration
- Hydra.Dsl.Haskell.Syntax: typeSynonymDeclarationComments :: TypedTerm TypeSynonymDeclaration -> TypedTerm (Maybe String)
- Hydra.Dsl.Haskell.Syntax: typeSynonymDeclarationName :: TypedTerm TypeSynonymDeclaration -> TypedTerm DeclarationHead
- Hydra.Dsl.Haskell.Syntax: typeSynonymDeclarationType :: TypedTerm TypeSynonymDeclaration -> TypedTerm Type
- Hydra.Dsl.Haskell.Syntax: typeSynonymDeclarationTypeSynonymDeclaration :: TypedName TypeSynonymDeclaration
- Hydra.Dsl.Haskell.Syntax: typeSynonymDeclarationWithComments :: TypedTerm TypeSynonymDeclaration -> TypedTerm (Maybe String) -> TypedTerm TypeSynonymDeclaration
- Hydra.Dsl.Haskell.Syntax: typeSynonymDeclarationWithName :: TypedTerm TypeSynonymDeclaration -> TypedTerm DeclarationHead -> TypedTerm TypeSynonymDeclaration
- Hydra.Dsl.Haskell.Syntax: typeSynonymDeclarationWithType :: TypedTerm TypeSynonymDeclaration -> TypedTerm Type -> TypedTerm TypeSynonymDeclaration
- Hydra.Dsl.Haskell.Syntax: typeTuple :: TypedTerm [Type] -> TypedTerm Type
- Hydra.Dsl.Haskell.Syntax: typeType :: TypedName Type
- Hydra.Dsl.Haskell.Syntax: typeVariable :: TypedTerm Name -> TypedTerm Type
- Hydra.Dsl.Haskell.Syntax: typedBinding :: TypedTerm TypeSignature -> TypedTerm ValueBinding -> TypedTerm (Maybe String) -> TypedTerm TypedBinding
- Hydra.Dsl.Haskell.Syntax: typedBindingComments :: TypedTerm TypedBinding -> TypedTerm (Maybe String)
- Hydra.Dsl.Haskell.Syntax: typedBindingTypeSignature :: TypedTerm TypedBinding -> TypedTerm TypeSignature
- Hydra.Dsl.Haskell.Syntax: typedBindingTypedBinding :: TypedName TypedBinding
- Hydra.Dsl.Haskell.Syntax: typedBindingValueBinding :: TypedTerm TypedBinding -> TypedTerm ValueBinding
- Hydra.Dsl.Haskell.Syntax: typedBindingWithComments :: TypedTerm TypedBinding -> TypedTerm (Maybe String) -> TypedTerm TypedBinding
- Hydra.Dsl.Haskell.Syntax: typedBindingWithTypeSignature :: TypedTerm TypedBinding -> TypedTerm TypeSignature -> TypedTerm TypedBinding
- Hydra.Dsl.Haskell.Syntax: typedBindingWithValueBinding :: TypedTerm TypedBinding -> TypedTerm ValueBinding -> TypedTerm TypedBinding
- Hydra.Dsl.Haskell.Syntax: typedExpression :: TypedTerm Expression -> TypedTerm Type -> TypedTerm TypedExpression
- Hydra.Dsl.Haskell.Syntax: typedExpressionInner :: TypedTerm TypedExpression -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: typedExpressionType :: TypedTerm TypedExpression -> TypedTerm Type
- Hydra.Dsl.Haskell.Syntax: typedExpressionTypedExpression :: TypedName TypedExpression
- Hydra.Dsl.Haskell.Syntax: typedExpressionWithInner :: TypedTerm TypedExpression -> TypedTerm Expression -> TypedTerm TypedExpression
- Hydra.Dsl.Haskell.Syntax: typedExpressionWithType :: TypedTerm TypedExpression -> TypedTerm Type -> TypedTerm TypedExpression
- Hydra.Dsl.Haskell.Syntax: typedPattern :: TypedTerm Pattern -> TypedTerm Type -> TypedTerm TypedPattern
- Hydra.Dsl.Haskell.Syntax: typedPatternInner :: TypedTerm TypedPattern -> TypedTerm Pattern
- Hydra.Dsl.Haskell.Syntax: typedPatternType :: TypedTerm TypedPattern -> TypedTerm Type
- Hydra.Dsl.Haskell.Syntax: typedPatternTypedPattern :: TypedName TypedPattern
- Hydra.Dsl.Haskell.Syntax: typedPatternWithInner :: TypedTerm TypedPattern -> TypedTerm Pattern -> TypedTerm TypedPattern
- Hydra.Dsl.Haskell.Syntax: typedPatternWithType :: TypedTerm TypedPattern -> TypedTerm Type -> TypedTerm TypedPattern
- Hydra.Dsl.Haskell.Syntax: unCaseRhs :: TypedTerm CaseRhs -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: unDerivingClause :: TypedTerm DerivingClause -> TypedTerm [Name]
- Hydra.Dsl.Haskell.Syntax: unLocalBindings :: TypedTerm LocalBindings -> TypedTerm [LocalBinding]
- Hydra.Dsl.Haskell.Syntax: unModuleName :: TypedTerm ModuleName -> TypedTerm String
- Hydra.Dsl.Haskell.Syntax: unNamePart :: TypedTerm NamePart -> TypedTerm String
- Hydra.Dsl.Haskell.Syntax: unRightHandSide :: TypedTerm RightHandSide -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: unStatement :: TypedTerm Statement -> TypedTerm Expression
- Hydra.Dsl.Haskell.Syntax: unVariable :: TypedTerm Variable -> TypedTerm Name
- Hydra.Dsl.Haskell.Syntax: valueBindingSimple :: TypedTerm SimpleValueBinding -> TypedTerm ValueBinding
- Hydra.Dsl.Haskell.Syntax: valueBindingValueBinding :: TypedName ValueBinding
- Hydra.Dsl.Haskell.Syntax: variable :: TypedTerm Name -> TypedTerm Variable
- Hydra.Dsl.Haskell.Syntax: variableVariable :: TypedName Variable
- Hydra.Haskell.Environment: instance GHC.Read.Read Hydra.Haskell.Environment.HaskellModuleMetadata
- Hydra.Haskell.Environment: instance GHC.Show.Show Hydra.Haskell.Environment.HaskellModuleMetadata
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.Alternative
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.ApplicationDeclarationHead
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.ApplicationExpression
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.ApplicationPattern
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.ApplicationType
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.AsPattern
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.CaseExpression
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.CaseRhs
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.ClassConstraint
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.ConstrainedType
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.Constraint
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.Constructor
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.DataDeclaration
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.DataKeyword
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.Declaration
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.DeclarationHead
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.DerivingClause
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.Export
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.Expression
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.Field
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.FieldUpdate
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.FunctionType
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.IfExpression
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.Import
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.ImportExportSubspec
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.ImportModifier
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.ImportSpec
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.InfixExpression
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.InfixType
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.LambdaExpression
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.LetExpression
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.Literal
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.LocalBinding
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.LocalBindings
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.Module
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.ModuleHead
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.ModuleName
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.Name
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.NamePart
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.NamedImportExport
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.Operator
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.Pattern
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.PatternField
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.PositionalConstructor
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.QualifiedName
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.RecordConstructor
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.RecordExpression
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.RecordPattern
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.RecordUpdateExpression
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.RightHandSide
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.SectionExpression
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.SimpleValueBinding
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.Statement
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.Type
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.TypeSignature
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.TypeSynonymDeclaration
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.TypedBinding
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.TypedExpression
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.TypedPattern
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.ValueBinding
- Hydra.Haskell.Syntax: instance GHC.Read.Read Hydra.Haskell.Syntax.Variable
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.Alternative
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.ApplicationDeclarationHead
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.ApplicationExpression
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.ApplicationPattern
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.ApplicationType
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.AsPattern
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.CaseExpression
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.CaseRhs
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.ClassConstraint
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.ConstrainedType
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.Constraint
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.Constructor
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.DataDeclaration
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.DataKeyword
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.Declaration
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.DeclarationHead
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.DerivingClause
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.Export
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.Expression
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.Field
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.FieldUpdate
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.FunctionType
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.IfExpression
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.Import
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.ImportExportSubspec
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.ImportModifier
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.ImportSpec
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.InfixExpression
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.InfixType
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.LambdaExpression
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.LetExpression
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.Literal
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.LocalBinding
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.LocalBindings
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.Module
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.ModuleHead
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.ModuleName
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.Name
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.NamePart
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.NamedImportExport
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.Operator
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.Pattern
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.PatternField
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.PositionalConstructor
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.QualifiedName
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.RecordConstructor
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.RecordExpression
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.RecordPattern
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.RecordUpdateExpression
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.RightHandSide
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.SectionExpression
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.SimpleValueBinding
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.Statement
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.Type
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.TypeSignature
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.TypeSynonymDeclaration
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.TypedBinding
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.TypedExpression
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.TypedPattern
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.ValueBinding
- Hydra.Haskell.Syntax: instance GHC.Show.Show Hydra.Haskell.Syntax.Variable
+ Hydra.Haskell.Dsl.Environment: haskellModuleMetadata :: TypedTerm Bool -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm HaskellModuleMetadata
+ Hydra.Haskell.Dsl.Environment: haskellModuleMetadataHaskellModuleMetadata :: TypedName HaskellModuleMetadata
+ Hydra.Haskell.Dsl.Environment: haskellModuleMetadataUsesByteString :: TypedTerm HaskellModuleMetadata -> TypedTerm Bool
+ Hydra.Haskell.Dsl.Environment: haskellModuleMetadataUsesInt :: TypedTerm HaskellModuleMetadata -> TypedTerm Bool
+ Hydra.Haskell.Dsl.Environment: haskellModuleMetadataUsesMap :: TypedTerm HaskellModuleMetadata -> TypedTerm Bool
+ Hydra.Haskell.Dsl.Environment: haskellModuleMetadataUsesSet :: TypedTerm HaskellModuleMetadata -> TypedTerm Bool
+ Hydra.Haskell.Dsl.Environment: haskellModuleMetadataUsesVoid :: TypedTerm HaskellModuleMetadata -> TypedTerm Bool
+ Hydra.Haskell.Dsl.Environment: haskellModuleMetadataWithUsesByteString :: TypedTerm HaskellModuleMetadata -> TypedTerm Bool -> TypedTerm HaskellModuleMetadata
+ Hydra.Haskell.Dsl.Environment: haskellModuleMetadataWithUsesInt :: TypedTerm HaskellModuleMetadata -> TypedTerm Bool -> TypedTerm HaskellModuleMetadata
+ Hydra.Haskell.Dsl.Environment: haskellModuleMetadataWithUsesMap :: TypedTerm HaskellModuleMetadata -> TypedTerm Bool -> TypedTerm HaskellModuleMetadata
+ Hydra.Haskell.Dsl.Environment: haskellModuleMetadataWithUsesSet :: TypedTerm HaskellModuleMetadata -> TypedTerm Bool -> TypedTerm HaskellModuleMetadata
+ Hydra.Haskell.Dsl.Environment: haskellModuleMetadataWithUsesVoid :: TypedTerm HaskellModuleMetadata -> TypedTerm Bool -> TypedTerm HaskellModuleMetadata
+ Hydra.Haskell.Dsl.Syntax: alternative :: TypedTerm Pattern -> TypedTerm CaseRhs -> TypedTerm (Maybe LocalBindings) -> TypedTerm Alternative
+ Hydra.Haskell.Dsl.Syntax: alternativeAlternative :: TypedName Alternative
+ Hydra.Haskell.Dsl.Syntax: alternativeBinds :: TypedTerm Alternative -> TypedTerm (Maybe LocalBindings)
+ Hydra.Haskell.Dsl.Syntax: alternativePattern :: TypedTerm Alternative -> TypedTerm Pattern
+ Hydra.Haskell.Dsl.Syntax: alternativeRhs :: TypedTerm Alternative -> TypedTerm CaseRhs
+ Hydra.Haskell.Dsl.Syntax: alternativeWithBinds :: TypedTerm Alternative -> TypedTerm (Maybe LocalBindings) -> TypedTerm Alternative
+ Hydra.Haskell.Dsl.Syntax: alternativeWithPattern :: TypedTerm Alternative -> TypedTerm Pattern -> TypedTerm Alternative
+ Hydra.Haskell.Dsl.Syntax: alternativeWithRhs :: TypedTerm Alternative -> TypedTerm CaseRhs -> TypedTerm Alternative
+ Hydra.Haskell.Dsl.Syntax: applicationDeclarationHead :: TypedTerm DeclarationHead -> TypedTerm Variable -> TypedTerm ApplicationDeclarationHead
+ Hydra.Haskell.Dsl.Syntax: applicationDeclarationHeadApplicationDeclarationHead :: TypedName ApplicationDeclarationHead
+ Hydra.Haskell.Dsl.Syntax: applicationDeclarationHeadFunction :: TypedTerm ApplicationDeclarationHead -> TypedTerm DeclarationHead
+ Hydra.Haskell.Dsl.Syntax: applicationDeclarationHeadOperand :: TypedTerm ApplicationDeclarationHead -> TypedTerm Variable
+ Hydra.Haskell.Dsl.Syntax: applicationDeclarationHeadWithFunction :: TypedTerm ApplicationDeclarationHead -> TypedTerm DeclarationHead -> TypedTerm ApplicationDeclarationHead
+ Hydra.Haskell.Dsl.Syntax: applicationDeclarationHeadWithOperand :: TypedTerm ApplicationDeclarationHead -> TypedTerm Variable -> TypedTerm ApplicationDeclarationHead
+ Hydra.Haskell.Dsl.Syntax: applicationExpression :: TypedTerm Expression -> TypedTerm Expression -> TypedTerm ApplicationExpression
+ Hydra.Haskell.Dsl.Syntax: applicationExpressionApplicationExpression :: TypedName ApplicationExpression
+ Hydra.Haskell.Dsl.Syntax: applicationExpressionArgument :: TypedTerm ApplicationExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: applicationExpressionFunction :: TypedTerm ApplicationExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: applicationExpressionWithArgument :: TypedTerm ApplicationExpression -> TypedTerm Expression -> TypedTerm ApplicationExpression
+ Hydra.Haskell.Dsl.Syntax: applicationExpressionWithFunction :: TypedTerm ApplicationExpression -> TypedTerm Expression -> TypedTerm ApplicationExpression
+ Hydra.Haskell.Dsl.Syntax: applicationPattern :: TypedTerm Name -> TypedTerm [Pattern] -> TypedTerm ApplicationPattern
+ Hydra.Haskell.Dsl.Syntax: applicationPatternApplicationPattern :: TypedName ApplicationPattern
+ Hydra.Haskell.Dsl.Syntax: applicationPatternArgs :: TypedTerm ApplicationPattern -> TypedTerm [Pattern]
+ Hydra.Haskell.Dsl.Syntax: applicationPatternName :: TypedTerm ApplicationPattern -> TypedTerm Name
+ Hydra.Haskell.Dsl.Syntax: applicationPatternWithArgs :: TypedTerm ApplicationPattern -> TypedTerm [Pattern] -> TypedTerm ApplicationPattern
+ Hydra.Haskell.Dsl.Syntax: applicationPatternWithName :: TypedTerm ApplicationPattern -> TypedTerm Name -> TypedTerm ApplicationPattern
+ Hydra.Haskell.Dsl.Syntax: applicationType :: TypedTerm Type -> TypedTerm Type -> TypedTerm ApplicationType
+ Hydra.Haskell.Dsl.Syntax: applicationTypeApplicationType :: TypedName ApplicationType
+ Hydra.Haskell.Dsl.Syntax: applicationTypeArgument :: TypedTerm ApplicationType -> TypedTerm Type
+ Hydra.Haskell.Dsl.Syntax: applicationTypeContext :: TypedTerm ApplicationType -> TypedTerm Type
+ Hydra.Haskell.Dsl.Syntax: applicationTypeWithArgument :: TypedTerm ApplicationType -> TypedTerm Type -> TypedTerm ApplicationType
+ Hydra.Haskell.Dsl.Syntax: applicationTypeWithContext :: TypedTerm ApplicationType -> TypedTerm Type -> TypedTerm ApplicationType
+ Hydra.Haskell.Dsl.Syntax: asPattern :: TypedTerm Name -> TypedTerm Pattern -> TypedTerm AsPattern
+ Hydra.Haskell.Dsl.Syntax: asPatternAsPattern :: TypedName AsPattern
+ Hydra.Haskell.Dsl.Syntax: asPatternInner :: TypedTerm AsPattern -> TypedTerm Pattern
+ Hydra.Haskell.Dsl.Syntax: asPatternName :: TypedTerm AsPattern -> TypedTerm Name
+ Hydra.Haskell.Dsl.Syntax: asPatternWithInner :: TypedTerm AsPattern -> TypedTerm Pattern -> TypedTerm AsPattern
+ Hydra.Haskell.Dsl.Syntax: asPatternWithName :: TypedTerm AsPattern -> TypedTerm Name -> TypedTerm AsPattern
+ Hydra.Haskell.Dsl.Syntax: caseExpression :: TypedTerm Expression -> TypedTerm [Alternative] -> TypedTerm CaseExpression
+ Hydra.Haskell.Dsl.Syntax: caseExpressionAlternatives :: TypedTerm CaseExpression -> TypedTerm [Alternative]
+ Hydra.Haskell.Dsl.Syntax: caseExpressionCase :: TypedTerm CaseExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: caseExpressionCaseExpression :: TypedName CaseExpression
+ Hydra.Haskell.Dsl.Syntax: caseExpressionWithAlternatives :: TypedTerm CaseExpression -> TypedTerm [Alternative] -> TypedTerm CaseExpression
+ Hydra.Haskell.Dsl.Syntax: caseExpressionWithCase :: TypedTerm CaseExpression -> TypedTerm Expression -> TypedTerm CaseExpression
+ Hydra.Haskell.Dsl.Syntax: caseRhs :: TypedTerm Expression -> TypedTerm CaseRhs
+ Hydra.Haskell.Dsl.Syntax: caseRhsCaseRhs :: TypedName CaseRhs
+ Hydra.Haskell.Dsl.Syntax: classConstraint :: TypedTerm Name -> TypedTerm [Type] -> TypedTerm ClassConstraint
+ Hydra.Haskell.Dsl.Syntax: classConstraintClassConstraint :: TypedName ClassConstraint
+ Hydra.Haskell.Dsl.Syntax: classConstraintName :: TypedTerm ClassConstraint -> TypedTerm Name
+ Hydra.Haskell.Dsl.Syntax: classConstraintTypes :: TypedTerm ClassConstraint -> TypedTerm [Type]
+ Hydra.Haskell.Dsl.Syntax: classConstraintWithName :: TypedTerm ClassConstraint -> TypedTerm Name -> TypedTerm ClassConstraint
+ Hydra.Haskell.Dsl.Syntax: classConstraintWithTypes :: TypedTerm ClassConstraint -> TypedTerm [Type] -> TypedTerm ClassConstraint
+ Hydra.Haskell.Dsl.Syntax: constrainedType :: TypedTerm Constraint -> TypedTerm Type -> TypedTerm ConstrainedType
+ Hydra.Haskell.Dsl.Syntax: constrainedTypeConstrainedType :: TypedName ConstrainedType
+ Hydra.Haskell.Dsl.Syntax: constrainedTypeCtx :: TypedTerm ConstrainedType -> TypedTerm Constraint
+ Hydra.Haskell.Dsl.Syntax: constrainedTypeType :: TypedTerm ConstrainedType -> TypedTerm Type
+ Hydra.Haskell.Dsl.Syntax: constrainedTypeWithCtx :: TypedTerm ConstrainedType -> TypedTerm Constraint -> TypedTerm ConstrainedType
+ Hydra.Haskell.Dsl.Syntax: constrainedTypeWithType :: TypedTerm ConstrainedType -> TypedTerm Type -> TypedTerm ConstrainedType
+ Hydra.Haskell.Dsl.Syntax: constraintClass :: TypedTerm ClassConstraint -> TypedTerm Constraint
+ Hydra.Haskell.Dsl.Syntax: constraintConstraint :: TypedName Constraint
+ Hydra.Haskell.Dsl.Syntax: constraintTuple :: TypedTerm [Constraint] -> TypedTerm Constraint
+ Hydra.Haskell.Dsl.Syntax: constructorConstructor :: TypedName Constructor
+ Hydra.Haskell.Dsl.Syntax: constructorOrdinary :: TypedTerm PositionalConstructor -> TypedTerm Constructor
+ Hydra.Haskell.Dsl.Syntax: constructorRecord :: TypedTerm RecordConstructor -> TypedTerm Constructor
+ Hydra.Haskell.Dsl.Syntax: dataDeclaration :: TypedTerm DataKeyword -> TypedTerm [Constraint] -> TypedTerm DeclarationHead -> TypedTerm [Constructor] -> TypedTerm [DerivingClause] -> TypedTerm (Maybe String) -> TypedTerm DataDeclaration
+ Hydra.Haskell.Dsl.Syntax: dataDeclarationComments :: TypedTerm DataDeclaration -> TypedTerm (Maybe String)
+ Hydra.Haskell.Dsl.Syntax: dataDeclarationConstructors :: TypedTerm DataDeclaration -> TypedTerm [Constructor]
+ Hydra.Haskell.Dsl.Syntax: dataDeclarationContext :: TypedTerm DataDeclaration -> TypedTerm [Constraint]
+ Hydra.Haskell.Dsl.Syntax: dataDeclarationDataDeclaration :: TypedName DataDeclaration
+ Hydra.Haskell.Dsl.Syntax: dataDeclarationDeriving :: TypedTerm DataDeclaration -> TypedTerm [DerivingClause]
+ Hydra.Haskell.Dsl.Syntax: dataDeclarationHead :: TypedTerm DataDeclaration -> TypedTerm DeclarationHead
+ Hydra.Haskell.Dsl.Syntax: dataDeclarationKeyword :: TypedTerm DataDeclaration -> TypedTerm DataKeyword
+ Hydra.Haskell.Dsl.Syntax: dataDeclarationWithComments :: TypedTerm DataDeclaration -> TypedTerm (Maybe String) -> TypedTerm DataDeclaration
+ Hydra.Haskell.Dsl.Syntax: dataDeclarationWithConstructors :: TypedTerm DataDeclaration -> TypedTerm [Constructor] -> TypedTerm DataDeclaration
+ Hydra.Haskell.Dsl.Syntax: dataDeclarationWithContext :: TypedTerm DataDeclaration -> TypedTerm [Constraint] -> TypedTerm DataDeclaration
+ Hydra.Haskell.Dsl.Syntax: dataDeclarationWithDeriving :: TypedTerm DataDeclaration -> TypedTerm [DerivingClause] -> TypedTerm DataDeclaration
+ Hydra.Haskell.Dsl.Syntax: dataDeclarationWithHead :: TypedTerm DataDeclaration -> TypedTerm DeclarationHead -> TypedTerm DataDeclaration
+ Hydra.Haskell.Dsl.Syntax: dataDeclarationWithKeyword :: TypedTerm DataDeclaration -> TypedTerm DataKeyword -> TypedTerm DataDeclaration
+ Hydra.Haskell.Dsl.Syntax: dataKeywordData :: TypedTerm DataKeyword
+ Hydra.Haskell.Dsl.Syntax: dataKeywordDataKeyword :: TypedName DataKeyword
+ Hydra.Haskell.Dsl.Syntax: dataKeywordNewtype :: TypedTerm DataKeyword
+ Hydra.Haskell.Dsl.Syntax: declarationData :: TypedTerm DataDeclaration -> TypedTerm Declaration
+ Hydra.Haskell.Dsl.Syntax: declarationDeclaration :: TypedName Declaration
+ Hydra.Haskell.Dsl.Syntax: declarationHeadApplication :: TypedTerm ApplicationDeclarationHead -> TypedTerm DeclarationHead
+ Hydra.Haskell.Dsl.Syntax: declarationHeadDeclarationHead :: TypedName DeclarationHead
+ Hydra.Haskell.Dsl.Syntax: declarationHeadSimple :: TypedTerm Name -> TypedTerm DeclarationHead
+ Hydra.Haskell.Dsl.Syntax: declarationType :: TypedTerm TypeSynonymDeclaration -> TypedTerm Declaration
+ Hydra.Haskell.Dsl.Syntax: declarationTypedBinding :: TypedTerm TypedBinding -> TypedTerm Declaration
+ Hydra.Haskell.Dsl.Syntax: declarationValueBinding :: TypedTerm ValueBinding -> TypedTerm Declaration
+ Hydra.Haskell.Dsl.Syntax: derivingClause :: TypedTerm [Name] -> TypedTerm DerivingClause
+ Hydra.Haskell.Dsl.Syntax: derivingClauseDerivingClause :: TypedName DerivingClause
+ Hydra.Haskell.Dsl.Syntax: exportDeclaration :: TypedTerm NamedImportExport -> TypedTerm Export
+ Hydra.Haskell.Dsl.Syntax: exportExport :: TypedName Export
+ Hydra.Haskell.Dsl.Syntax: exportModule :: TypedTerm ModuleName -> TypedTerm Export
+ Hydra.Haskell.Dsl.Syntax: expressionApplication :: TypedTerm ApplicationExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: expressionCase :: TypedTerm CaseExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: expressionConstructRecord :: TypedTerm RecordExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: expressionDo :: TypedTerm [Statement] -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: expressionExpression :: TypedName Expression
+ Hydra.Haskell.Dsl.Syntax: expressionIf :: TypedTerm IfExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: expressionInfixApplication :: TypedTerm InfixExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: expressionLambda :: TypedTerm LambdaExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: expressionLeftSection :: TypedTerm SectionExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: expressionLet :: TypedTerm LetExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: expressionList :: TypedTerm [Expression] -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: expressionLiteral :: TypedTerm Literal -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: expressionRightSection :: TypedTerm SectionExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: expressionTuple :: TypedTerm [Expression] -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: expressionTypeSignature :: TypedTerm TypedExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: expressionUpdateRecord :: TypedTerm RecordUpdateExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: expressionVariable :: TypedTerm Name -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: field :: TypedTerm Name -> TypedTerm Type -> TypedTerm (Maybe String) -> TypedTerm Field
+ Hydra.Haskell.Dsl.Syntax: fieldComments :: TypedTerm Field -> TypedTerm (Maybe String)
+ Hydra.Haskell.Dsl.Syntax: fieldField :: TypedName Field
+ Hydra.Haskell.Dsl.Syntax: fieldName :: TypedTerm Field -> TypedTerm Name
+ Hydra.Haskell.Dsl.Syntax: fieldType :: TypedTerm Field -> TypedTerm Type
+ Hydra.Haskell.Dsl.Syntax: fieldUpdate :: TypedTerm Name -> TypedTerm Expression -> TypedTerm FieldUpdate
+ Hydra.Haskell.Dsl.Syntax: fieldUpdateFieldUpdate :: TypedName FieldUpdate
+ Hydra.Haskell.Dsl.Syntax: fieldUpdateName :: TypedTerm FieldUpdate -> TypedTerm Name
+ Hydra.Haskell.Dsl.Syntax: fieldUpdateValue :: TypedTerm FieldUpdate -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: fieldUpdateWithName :: TypedTerm FieldUpdate -> TypedTerm Name -> TypedTerm FieldUpdate
+ Hydra.Haskell.Dsl.Syntax: fieldUpdateWithValue :: TypedTerm FieldUpdate -> TypedTerm Expression -> TypedTerm FieldUpdate
+ Hydra.Haskell.Dsl.Syntax: fieldWithComments :: TypedTerm Field -> TypedTerm (Maybe String) -> TypedTerm Field
+ Hydra.Haskell.Dsl.Syntax: fieldWithName :: TypedTerm Field -> TypedTerm Name -> TypedTerm Field
+ Hydra.Haskell.Dsl.Syntax: fieldWithType :: TypedTerm Field -> TypedTerm Type -> TypedTerm Field
+ Hydra.Haskell.Dsl.Syntax: functionType :: TypedTerm Type -> TypedTerm Type -> TypedTerm FunctionType
+ Hydra.Haskell.Dsl.Syntax: functionTypeCodomain :: TypedTerm FunctionType -> TypedTerm Type
+ Hydra.Haskell.Dsl.Syntax: functionTypeDomain :: TypedTerm FunctionType -> TypedTerm Type
+ Hydra.Haskell.Dsl.Syntax: functionTypeFunctionType :: TypedName FunctionType
+ Hydra.Haskell.Dsl.Syntax: functionTypeWithCodomain :: TypedTerm FunctionType -> TypedTerm Type -> TypedTerm FunctionType
+ Hydra.Haskell.Dsl.Syntax: functionTypeWithDomain :: TypedTerm FunctionType -> TypedTerm Type -> TypedTerm FunctionType
+ Hydra.Haskell.Dsl.Syntax: ifExpression :: TypedTerm Expression -> TypedTerm Expression -> TypedTerm Expression -> TypedTerm IfExpression
+ Hydra.Haskell.Dsl.Syntax: ifExpressionCondition :: TypedTerm IfExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: ifExpressionElse :: TypedTerm IfExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: ifExpressionIfExpression :: TypedName IfExpression
+ Hydra.Haskell.Dsl.Syntax: ifExpressionThen :: TypedTerm IfExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: ifExpressionWithCondition :: TypedTerm IfExpression -> TypedTerm Expression -> TypedTerm IfExpression
+ Hydra.Haskell.Dsl.Syntax: ifExpressionWithElse :: TypedTerm IfExpression -> TypedTerm Expression -> TypedTerm IfExpression
+ Hydra.Haskell.Dsl.Syntax: ifExpressionWithThen :: TypedTerm IfExpression -> TypedTerm Expression -> TypedTerm IfExpression
+ Hydra.Haskell.Dsl.Syntax: importAs :: TypedTerm Import -> TypedTerm (Maybe ModuleName)
+ Hydra.Haskell.Dsl.Syntax: importExportSubspecAll :: TypedTerm ImportExportSubspec
+ Hydra.Haskell.Dsl.Syntax: importExportSubspecImportExportSubspec :: TypedName ImportExportSubspec
+ Hydra.Haskell.Dsl.Syntax: importExportSubspecList :: TypedTerm [Name] -> TypedTerm ImportExportSubspec
+ Hydra.Haskell.Dsl.Syntax: importImport :: TypedName Import
+ Hydra.Haskell.Dsl.Syntax: importModifierImportModifier :: TypedName ImportModifier
+ Hydra.Haskell.Dsl.Syntax: importModifierPattern :: TypedTerm ImportModifier
+ Hydra.Haskell.Dsl.Syntax: importModifierType :: TypedTerm ImportModifier
+ Hydra.Haskell.Dsl.Syntax: importModule :: TypedTerm Import -> TypedTerm ModuleName
+ Hydra.Haskell.Dsl.Syntax: importQualified :: TypedTerm Import -> TypedTerm Bool
+ Hydra.Haskell.Dsl.Syntax: importSpec :: TypedTerm Import -> TypedTerm (Maybe ImportSpec)
+ Hydra.Haskell.Dsl.Syntax: importSpecHiding :: TypedTerm [NamedImportExport] -> TypedTerm ImportSpec
+ Hydra.Haskell.Dsl.Syntax: importSpecImportSpec :: TypedName ImportSpec
+ Hydra.Haskell.Dsl.Syntax: importSpecList :: TypedTerm [NamedImportExport] -> TypedTerm ImportSpec
+ Hydra.Haskell.Dsl.Syntax: importWithAs :: TypedTerm Import -> TypedTerm (Maybe ModuleName) -> TypedTerm Import
+ Hydra.Haskell.Dsl.Syntax: importWithModule :: TypedTerm Import -> TypedTerm ModuleName -> TypedTerm Import
+ Hydra.Haskell.Dsl.Syntax: importWithQualified :: TypedTerm Import -> TypedTerm Bool -> TypedTerm Import
+ Hydra.Haskell.Dsl.Syntax: importWithSpec :: TypedTerm Import -> TypedTerm (Maybe ImportSpec) -> TypedTerm Import
+ Hydra.Haskell.Dsl.Syntax: import_ :: TypedTerm Bool -> TypedTerm ModuleName -> TypedTerm (Maybe ModuleName) -> TypedTerm (Maybe ImportSpec) -> TypedTerm Import
+ Hydra.Haskell.Dsl.Syntax: infixExpression :: TypedTerm Expression -> TypedTerm Operator -> TypedTerm Expression -> TypedTerm InfixExpression
+ Hydra.Haskell.Dsl.Syntax: infixExpressionInfixExpression :: TypedName InfixExpression
+ Hydra.Haskell.Dsl.Syntax: infixExpressionLhs :: TypedTerm InfixExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: infixExpressionOperator :: TypedTerm InfixExpression -> TypedTerm Operator
+ Hydra.Haskell.Dsl.Syntax: infixExpressionRhs :: TypedTerm InfixExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: infixExpressionWithLhs :: TypedTerm InfixExpression -> TypedTerm Expression -> TypedTerm InfixExpression
+ Hydra.Haskell.Dsl.Syntax: infixExpressionWithOperator :: TypedTerm InfixExpression -> TypedTerm Operator -> TypedTerm InfixExpression
+ Hydra.Haskell.Dsl.Syntax: infixExpressionWithRhs :: TypedTerm InfixExpression -> TypedTerm Expression -> TypedTerm InfixExpression
+ Hydra.Haskell.Dsl.Syntax: infixType :: TypedTerm Type -> TypedTerm Operator -> TypedTerm Type -> TypedTerm InfixType
+ Hydra.Haskell.Dsl.Syntax: infixTypeInfixType :: TypedName InfixType
+ Hydra.Haskell.Dsl.Syntax: infixTypeLhs :: TypedTerm InfixType -> TypedTerm Type
+ Hydra.Haskell.Dsl.Syntax: infixTypeOperator :: TypedTerm InfixType -> TypedTerm Operator
+ Hydra.Haskell.Dsl.Syntax: infixTypeRhs :: TypedTerm InfixType -> TypedTerm Type
+ Hydra.Haskell.Dsl.Syntax: infixTypeWithLhs :: TypedTerm InfixType -> TypedTerm Type -> TypedTerm InfixType
+ Hydra.Haskell.Dsl.Syntax: infixTypeWithOperator :: TypedTerm InfixType -> TypedTerm Operator -> TypedTerm InfixType
+ Hydra.Haskell.Dsl.Syntax: infixTypeWithRhs :: TypedTerm InfixType -> TypedTerm Type -> TypedTerm InfixType
+ Hydra.Haskell.Dsl.Syntax: lambdaExpression :: TypedTerm [Pattern] -> TypedTerm Expression -> TypedTerm LambdaExpression
+ Hydra.Haskell.Dsl.Syntax: lambdaExpressionBindings :: TypedTerm LambdaExpression -> TypedTerm [Pattern]
+ Hydra.Haskell.Dsl.Syntax: lambdaExpressionInner :: TypedTerm LambdaExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: lambdaExpressionLambdaExpression :: TypedName LambdaExpression
+ Hydra.Haskell.Dsl.Syntax: lambdaExpressionWithBindings :: TypedTerm LambdaExpression -> TypedTerm [Pattern] -> TypedTerm LambdaExpression
+ Hydra.Haskell.Dsl.Syntax: lambdaExpressionWithInner :: TypedTerm LambdaExpression -> TypedTerm Expression -> TypedTerm LambdaExpression
+ Hydra.Haskell.Dsl.Syntax: letExpression :: TypedTerm [LocalBinding] -> TypedTerm Expression -> TypedTerm LetExpression
+ Hydra.Haskell.Dsl.Syntax: letExpressionBindings :: TypedTerm LetExpression -> TypedTerm [LocalBinding]
+ Hydra.Haskell.Dsl.Syntax: letExpressionInner :: TypedTerm LetExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: letExpressionLetExpression :: TypedName LetExpression
+ Hydra.Haskell.Dsl.Syntax: letExpressionWithBindings :: TypedTerm LetExpression -> TypedTerm [LocalBinding] -> TypedTerm LetExpression
+ Hydra.Haskell.Dsl.Syntax: letExpressionWithInner :: TypedTerm LetExpression -> TypedTerm Expression -> TypedTerm LetExpression
+ Hydra.Haskell.Dsl.Syntax: literalChar :: TypedTerm Int -> TypedTerm Literal
+ Hydra.Haskell.Dsl.Syntax: literalDouble :: TypedTerm Double -> TypedTerm Literal
+ Hydra.Haskell.Dsl.Syntax: literalFloat :: TypedTerm Float -> TypedTerm Literal
+ Hydra.Haskell.Dsl.Syntax: literalInt :: TypedTerm Int -> TypedTerm Literal
+ Hydra.Haskell.Dsl.Syntax: literalInteger :: TypedTerm Integer -> TypedTerm Literal
+ Hydra.Haskell.Dsl.Syntax: literalLiteral :: TypedName Literal
+ Hydra.Haskell.Dsl.Syntax: literalString :: TypedTerm String -> TypedTerm Literal
+ Hydra.Haskell.Dsl.Syntax: localBindingLocalBinding :: TypedName LocalBinding
+ Hydra.Haskell.Dsl.Syntax: localBindingSignature :: TypedTerm TypeSignature -> TypedTerm LocalBinding
+ Hydra.Haskell.Dsl.Syntax: localBindingValue :: TypedTerm ValueBinding -> TypedTerm LocalBinding
+ Hydra.Haskell.Dsl.Syntax: localBindings :: TypedTerm [LocalBinding] -> TypedTerm LocalBindings
+ Hydra.Haskell.Dsl.Syntax: localBindingsLocalBindings :: TypedName LocalBindings
+ Hydra.Haskell.Dsl.Syntax: moduleDeclarations :: TypedTerm Module -> TypedTerm [Declaration]
+ Hydra.Haskell.Dsl.Syntax: moduleHead :: TypedTerm Module -> TypedTerm (Maybe ModuleHead)
+ Hydra.Haskell.Dsl.Syntax: moduleHead2 :: TypedTerm (Maybe String) -> TypedTerm ModuleName -> TypedTerm [Export] -> TypedTerm ModuleHead
+ Hydra.Haskell.Dsl.Syntax: moduleHeadComments :: TypedTerm ModuleHead -> TypedTerm (Maybe String)
+ Hydra.Haskell.Dsl.Syntax: moduleHeadExports :: TypedTerm ModuleHead -> TypedTerm [Export]
+ Hydra.Haskell.Dsl.Syntax: moduleHeadModuleHead :: TypedName ModuleHead
+ Hydra.Haskell.Dsl.Syntax: moduleHeadName :: TypedTerm ModuleHead -> TypedTerm ModuleName
+ Hydra.Haskell.Dsl.Syntax: moduleHeadWithComments :: TypedTerm ModuleHead -> TypedTerm (Maybe String) -> TypedTerm ModuleHead
+ Hydra.Haskell.Dsl.Syntax: moduleHeadWithExports :: TypedTerm ModuleHead -> TypedTerm [Export] -> TypedTerm ModuleHead
+ Hydra.Haskell.Dsl.Syntax: moduleHeadWithName :: TypedTerm ModuleHead -> TypedTerm ModuleName -> TypedTerm ModuleHead
+ Hydra.Haskell.Dsl.Syntax: moduleImports :: TypedTerm Module -> TypedTerm [Import]
+ Hydra.Haskell.Dsl.Syntax: moduleModule :: TypedName Module
+ Hydra.Haskell.Dsl.Syntax: moduleName :: TypedTerm String -> TypedTerm ModuleName
+ Hydra.Haskell.Dsl.Syntax: moduleNameModuleName :: TypedName ModuleName
+ Hydra.Haskell.Dsl.Syntax: moduleWithDeclarations :: TypedTerm Module -> TypedTerm [Declaration] -> TypedTerm Module
+ Hydra.Haskell.Dsl.Syntax: moduleWithHead :: TypedTerm Module -> TypedTerm (Maybe ModuleHead) -> TypedTerm Module
+ Hydra.Haskell.Dsl.Syntax: moduleWithImports :: TypedTerm Module -> TypedTerm [Import] -> TypedTerm Module
+ Hydra.Haskell.Dsl.Syntax: module_ :: TypedTerm (Maybe ModuleHead) -> TypedTerm [Import] -> TypedTerm [Declaration] -> TypedTerm Module
+ Hydra.Haskell.Dsl.Syntax: nameImplicit :: TypedTerm QualifiedName -> TypedTerm Name
+ Hydra.Haskell.Dsl.Syntax: nameName :: TypedName Name
+ Hydra.Haskell.Dsl.Syntax: nameNormal :: TypedTerm QualifiedName -> TypedTerm Name
+ Hydra.Haskell.Dsl.Syntax: namePart :: TypedTerm String -> TypedTerm NamePart
+ Hydra.Haskell.Dsl.Syntax: namePartNamePart :: TypedName NamePart
+ Hydra.Haskell.Dsl.Syntax: namedImportExport :: TypedTerm (Maybe ImportModifier) -> TypedTerm Name -> TypedTerm (Maybe ImportExportSubspec) -> TypedTerm NamedImportExport
+ Hydra.Haskell.Dsl.Syntax: namedImportExportModifier :: TypedTerm NamedImportExport -> TypedTerm (Maybe ImportModifier)
+ Hydra.Haskell.Dsl.Syntax: namedImportExportName :: TypedTerm NamedImportExport -> TypedTerm Name
+ Hydra.Haskell.Dsl.Syntax: namedImportExportNamedImportExport :: TypedName NamedImportExport
+ Hydra.Haskell.Dsl.Syntax: namedImportExportSubspec :: TypedTerm NamedImportExport -> TypedTerm (Maybe ImportExportSubspec)
+ Hydra.Haskell.Dsl.Syntax: namedImportExportWithModifier :: TypedTerm NamedImportExport -> TypedTerm (Maybe ImportModifier) -> TypedTerm NamedImportExport
+ Hydra.Haskell.Dsl.Syntax: namedImportExportWithName :: TypedTerm NamedImportExport -> TypedTerm Name -> TypedTerm NamedImportExport
+ Hydra.Haskell.Dsl.Syntax: namedImportExportWithSubspec :: TypedTerm NamedImportExport -> TypedTerm (Maybe ImportExportSubspec) -> TypedTerm NamedImportExport
+ Hydra.Haskell.Dsl.Syntax: operatorBacktick :: TypedTerm QualifiedName -> TypedTerm Operator
+ Hydra.Haskell.Dsl.Syntax: operatorNormal :: TypedTerm QualifiedName -> TypedTerm Operator
+ Hydra.Haskell.Dsl.Syntax: operatorOperator :: TypedName Operator
+ Hydra.Haskell.Dsl.Syntax: patternApplication :: TypedTerm ApplicationPattern -> TypedTerm Pattern
+ Hydra.Haskell.Dsl.Syntax: patternAs :: TypedTerm AsPattern -> TypedTerm Pattern
+ Hydra.Haskell.Dsl.Syntax: patternField :: TypedTerm Name -> TypedTerm Pattern -> TypedTerm PatternField
+ Hydra.Haskell.Dsl.Syntax: patternFieldName :: TypedTerm PatternField -> TypedTerm Name
+ Hydra.Haskell.Dsl.Syntax: patternFieldPattern :: TypedTerm PatternField -> TypedTerm Pattern
+ Hydra.Haskell.Dsl.Syntax: patternFieldPatternField :: TypedName PatternField
+ Hydra.Haskell.Dsl.Syntax: patternFieldWithName :: TypedTerm PatternField -> TypedTerm Name -> TypedTerm PatternField
+ Hydra.Haskell.Dsl.Syntax: patternFieldWithPattern :: TypedTerm PatternField -> TypedTerm Pattern -> TypedTerm PatternField
+ Hydra.Haskell.Dsl.Syntax: patternList :: TypedTerm [Pattern] -> TypedTerm Pattern
+ Hydra.Haskell.Dsl.Syntax: patternLiteral :: TypedTerm Literal -> TypedTerm Pattern
+ Hydra.Haskell.Dsl.Syntax: patternName :: TypedTerm Name -> TypedTerm Pattern
+ Hydra.Haskell.Dsl.Syntax: patternPattern :: TypedName Pattern
+ Hydra.Haskell.Dsl.Syntax: patternRecord :: TypedTerm RecordPattern -> TypedTerm Pattern
+ Hydra.Haskell.Dsl.Syntax: patternTuple :: TypedTerm [Pattern] -> TypedTerm Pattern
+ Hydra.Haskell.Dsl.Syntax: patternTyped :: TypedTerm TypedPattern -> TypedTerm Pattern
+ Hydra.Haskell.Dsl.Syntax: patternWildcard :: TypedTerm Pattern
+ Hydra.Haskell.Dsl.Syntax: positionalConstructor :: TypedTerm Name -> TypedTerm [Type] -> TypedTerm (Maybe String) -> TypedTerm PositionalConstructor
+ Hydra.Haskell.Dsl.Syntax: positionalConstructorComments :: TypedTerm PositionalConstructor -> TypedTerm (Maybe String)
+ Hydra.Haskell.Dsl.Syntax: positionalConstructorFields :: TypedTerm PositionalConstructor -> TypedTerm [Type]
+ Hydra.Haskell.Dsl.Syntax: positionalConstructorName :: TypedTerm PositionalConstructor -> TypedTerm Name
+ Hydra.Haskell.Dsl.Syntax: positionalConstructorPositionalConstructor :: TypedName PositionalConstructor
+ Hydra.Haskell.Dsl.Syntax: positionalConstructorWithComments :: TypedTerm PositionalConstructor -> TypedTerm (Maybe String) -> TypedTerm PositionalConstructor
+ Hydra.Haskell.Dsl.Syntax: positionalConstructorWithFields :: TypedTerm PositionalConstructor -> TypedTerm [Type] -> TypedTerm PositionalConstructor
+ Hydra.Haskell.Dsl.Syntax: positionalConstructorWithName :: TypedTerm PositionalConstructor -> TypedTerm Name -> TypedTerm PositionalConstructor
+ Hydra.Haskell.Dsl.Syntax: qualifiedName :: TypedTerm [NamePart] -> TypedTerm NamePart -> TypedTerm QualifiedName
+ Hydra.Haskell.Dsl.Syntax: qualifiedNameQualifiedName :: TypedName QualifiedName
+ Hydra.Haskell.Dsl.Syntax: qualifiedNameQualifiers :: TypedTerm QualifiedName -> TypedTerm [NamePart]
+ Hydra.Haskell.Dsl.Syntax: qualifiedNameUnqualified :: TypedTerm QualifiedName -> TypedTerm NamePart
+ Hydra.Haskell.Dsl.Syntax: qualifiedNameWithQualifiers :: TypedTerm QualifiedName -> TypedTerm [NamePart] -> TypedTerm QualifiedName
+ Hydra.Haskell.Dsl.Syntax: qualifiedNameWithUnqualified :: TypedTerm QualifiedName -> TypedTerm NamePart -> TypedTerm QualifiedName
+ Hydra.Haskell.Dsl.Syntax: recordConstructor :: TypedTerm Name -> TypedTerm [Field] -> TypedTerm (Maybe String) -> TypedTerm RecordConstructor
+ Hydra.Haskell.Dsl.Syntax: recordConstructorComments :: TypedTerm RecordConstructor -> TypedTerm (Maybe String)
+ Hydra.Haskell.Dsl.Syntax: recordConstructorFields :: TypedTerm RecordConstructor -> TypedTerm [Field]
+ Hydra.Haskell.Dsl.Syntax: recordConstructorName :: TypedTerm RecordConstructor -> TypedTerm Name
+ Hydra.Haskell.Dsl.Syntax: recordConstructorRecordConstructor :: TypedName RecordConstructor
+ Hydra.Haskell.Dsl.Syntax: recordConstructorWithComments :: TypedTerm RecordConstructor -> TypedTerm (Maybe String) -> TypedTerm RecordConstructor
+ Hydra.Haskell.Dsl.Syntax: recordConstructorWithFields :: TypedTerm RecordConstructor -> TypedTerm [Field] -> TypedTerm RecordConstructor
+ Hydra.Haskell.Dsl.Syntax: recordConstructorWithName :: TypedTerm RecordConstructor -> TypedTerm Name -> TypedTerm RecordConstructor
+ Hydra.Haskell.Dsl.Syntax: recordExpression :: TypedTerm Name -> TypedTerm [FieldUpdate] -> TypedTerm RecordExpression
+ Hydra.Haskell.Dsl.Syntax: recordExpressionFields :: TypedTerm RecordExpression -> TypedTerm [FieldUpdate]
+ Hydra.Haskell.Dsl.Syntax: recordExpressionName :: TypedTerm RecordExpression -> TypedTerm Name
+ Hydra.Haskell.Dsl.Syntax: recordExpressionRecordExpression :: TypedName RecordExpression
+ Hydra.Haskell.Dsl.Syntax: recordExpressionWithFields :: TypedTerm RecordExpression -> TypedTerm [FieldUpdate] -> TypedTerm RecordExpression
+ Hydra.Haskell.Dsl.Syntax: recordExpressionWithName :: TypedTerm RecordExpression -> TypedTerm Name -> TypedTerm RecordExpression
+ Hydra.Haskell.Dsl.Syntax: recordPattern :: TypedTerm Name -> TypedTerm [PatternField] -> TypedTerm RecordPattern
+ Hydra.Haskell.Dsl.Syntax: recordPatternFields :: TypedTerm RecordPattern -> TypedTerm [PatternField]
+ Hydra.Haskell.Dsl.Syntax: recordPatternName :: TypedTerm RecordPattern -> TypedTerm Name
+ Hydra.Haskell.Dsl.Syntax: recordPatternRecordPattern :: TypedName RecordPattern
+ Hydra.Haskell.Dsl.Syntax: recordPatternWithFields :: TypedTerm RecordPattern -> TypedTerm [PatternField] -> TypedTerm RecordPattern
+ Hydra.Haskell.Dsl.Syntax: recordPatternWithName :: TypedTerm RecordPattern -> TypedTerm Name -> TypedTerm RecordPattern
+ Hydra.Haskell.Dsl.Syntax: recordUpdateExpression :: TypedTerm Expression -> TypedTerm [FieldUpdate] -> TypedTerm RecordUpdateExpression
+ Hydra.Haskell.Dsl.Syntax: recordUpdateExpressionFields :: TypedTerm RecordUpdateExpression -> TypedTerm [FieldUpdate]
+ Hydra.Haskell.Dsl.Syntax: recordUpdateExpressionInner :: TypedTerm RecordUpdateExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: recordUpdateExpressionRecordUpdateExpression :: TypedName RecordUpdateExpression
+ Hydra.Haskell.Dsl.Syntax: recordUpdateExpressionWithFields :: TypedTerm RecordUpdateExpression -> TypedTerm [FieldUpdate] -> TypedTerm RecordUpdateExpression
+ Hydra.Haskell.Dsl.Syntax: recordUpdateExpressionWithInner :: TypedTerm RecordUpdateExpression -> TypedTerm Expression -> TypedTerm RecordUpdateExpression
+ Hydra.Haskell.Dsl.Syntax: rightHandSide :: TypedTerm Expression -> TypedTerm RightHandSide
+ Hydra.Haskell.Dsl.Syntax: rightHandSideRightHandSide :: TypedName RightHandSide
+ Hydra.Haskell.Dsl.Syntax: sectionExpression :: TypedTerm Operator -> TypedTerm Expression -> TypedTerm SectionExpression
+ Hydra.Haskell.Dsl.Syntax: sectionExpressionExpression :: TypedTerm SectionExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: sectionExpressionOperator :: TypedTerm SectionExpression -> TypedTerm Operator
+ Hydra.Haskell.Dsl.Syntax: sectionExpressionSectionExpression :: TypedName SectionExpression
+ Hydra.Haskell.Dsl.Syntax: sectionExpressionWithExpression :: TypedTerm SectionExpression -> TypedTerm Expression -> TypedTerm SectionExpression
+ Hydra.Haskell.Dsl.Syntax: sectionExpressionWithOperator :: TypedTerm SectionExpression -> TypedTerm Operator -> TypedTerm SectionExpression
+ Hydra.Haskell.Dsl.Syntax: simpleValueBinding :: TypedTerm Pattern -> TypedTerm RightHandSide -> TypedTerm (Maybe LocalBindings) -> TypedTerm (Maybe String) -> TypedTerm SimpleValueBinding
+ Hydra.Haskell.Dsl.Syntax: simpleValueBindingComments :: TypedTerm SimpleValueBinding -> TypedTerm (Maybe String)
+ Hydra.Haskell.Dsl.Syntax: simpleValueBindingLocalBindings :: TypedTerm SimpleValueBinding -> TypedTerm (Maybe LocalBindings)
+ Hydra.Haskell.Dsl.Syntax: simpleValueBindingPattern :: TypedTerm SimpleValueBinding -> TypedTerm Pattern
+ Hydra.Haskell.Dsl.Syntax: simpleValueBindingRhs :: TypedTerm SimpleValueBinding -> TypedTerm RightHandSide
+ Hydra.Haskell.Dsl.Syntax: simpleValueBindingSimpleValueBinding :: TypedName SimpleValueBinding
+ Hydra.Haskell.Dsl.Syntax: simpleValueBindingWithComments :: TypedTerm SimpleValueBinding -> TypedTerm (Maybe String) -> TypedTerm SimpleValueBinding
+ Hydra.Haskell.Dsl.Syntax: simpleValueBindingWithLocalBindings :: TypedTerm SimpleValueBinding -> TypedTerm (Maybe LocalBindings) -> TypedTerm SimpleValueBinding
+ Hydra.Haskell.Dsl.Syntax: simpleValueBindingWithPattern :: TypedTerm SimpleValueBinding -> TypedTerm Pattern -> TypedTerm SimpleValueBinding
+ Hydra.Haskell.Dsl.Syntax: simpleValueBindingWithRhs :: TypedTerm SimpleValueBinding -> TypedTerm RightHandSide -> TypedTerm SimpleValueBinding
+ Hydra.Haskell.Dsl.Syntax: statement :: TypedTerm Expression -> TypedTerm Statement
+ Hydra.Haskell.Dsl.Syntax: statementStatement :: TypedName Statement
+ Hydra.Haskell.Dsl.Syntax: typeApplication :: TypedTerm ApplicationType -> TypedTerm Type
+ Hydra.Haskell.Dsl.Syntax: typeCtx :: TypedTerm ConstrainedType -> TypedTerm Type
+ Hydra.Haskell.Dsl.Syntax: typeFunction :: TypedTerm FunctionType -> TypedTerm Type
+ Hydra.Haskell.Dsl.Syntax: typeInfix :: TypedTerm InfixType -> TypedTerm Type
+ Hydra.Haskell.Dsl.Syntax: typeList :: TypedTerm Type -> TypedTerm Type
+ Hydra.Haskell.Dsl.Syntax: typeSignature :: TypedTerm Name -> TypedTerm Type -> TypedTerm TypeSignature
+ Hydra.Haskell.Dsl.Syntax: typeSignatureName :: TypedTerm TypeSignature -> TypedTerm Name
+ Hydra.Haskell.Dsl.Syntax: typeSignatureType :: TypedTerm TypeSignature -> TypedTerm Type
+ Hydra.Haskell.Dsl.Syntax: typeSignatureTypeSignature :: TypedName TypeSignature
+ Hydra.Haskell.Dsl.Syntax: typeSignatureWithName :: TypedTerm TypeSignature -> TypedTerm Name -> TypedTerm TypeSignature
+ Hydra.Haskell.Dsl.Syntax: typeSignatureWithType :: TypedTerm TypeSignature -> TypedTerm Type -> TypedTerm TypeSignature
+ Hydra.Haskell.Dsl.Syntax: typeSynonymDeclaration :: TypedTerm DeclarationHead -> TypedTerm Type -> TypedTerm (Maybe String) -> TypedTerm TypeSynonymDeclaration
+ Hydra.Haskell.Dsl.Syntax: typeSynonymDeclarationComments :: TypedTerm TypeSynonymDeclaration -> TypedTerm (Maybe String)
+ Hydra.Haskell.Dsl.Syntax: typeSynonymDeclarationName :: TypedTerm TypeSynonymDeclaration -> TypedTerm DeclarationHead
+ Hydra.Haskell.Dsl.Syntax: typeSynonymDeclarationType :: TypedTerm TypeSynonymDeclaration -> TypedTerm Type
+ Hydra.Haskell.Dsl.Syntax: typeSynonymDeclarationTypeSynonymDeclaration :: TypedName TypeSynonymDeclaration
+ Hydra.Haskell.Dsl.Syntax: typeSynonymDeclarationWithComments :: TypedTerm TypeSynonymDeclaration -> TypedTerm (Maybe String) -> TypedTerm TypeSynonymDeclaration
+ Hydra.Haskell.Dsl.Syntax: typeSynonymDeclarationWithName :: TypedTerm TypeSynonymDeclaration -> TypedTerm DeclarationHead -> TypedTerm TypeSynonymDeclaration
+ Hydra.Haskell.Dsl.Syntax: typeSynonymDeclarationWithType :: TypedTerm TypeSynonymDeclaration -> TypedTerm Type -> TypedTerm TypeSynonymDeclaration
+ Hydra.Haskell.Dsl.Syntax: typeTuple :: TypedTerm [Type] -> TypedTerm Type
+ Hydra.Haskell.Dsl.Syntax: typeType :: TypedName Type
+ Hydra.Haskell.Dsl.Syntax: typeVariable :: TypedTerm Name -> TypedTerm Type
+ Hydra.Haskell.Dsl.Syntax: typedBinding :: TypedTerm TypeSignature -> TypedTerm ValueBinding -> TypedTerm (Maybe String) -> TypedTerm TypedBinding
+ Hydra.Haskell.Dsl.Syntax: typedBindingComments :: TypedTerm TypedBinding -> TypedTerm (Maybe String)
+ Hydra.Haskell.Dsl.Syntax: typedBindingTypeSignature :: TypedTerm TypedBinding -> TypedTerm TypeSignature
+ Hydra.Haskell.Dsl.Syntax: typedBindingTypedBinding :: TypedName TypedBinding
+ Hydra.Haskell.Dsl.Syntax: typedBindingValueBinding :: TypedTerm TypedBinding -> TypedTerm ValueBinding
+ Hydra.Haskell.Dsl.Syntax: typedBindingWithComments :: TypedTerm TypedBinding -> TypedTerm (Maybe String) -> TypedTerm TypedBinding
+ Hydra.Haskell.Dsl.Syntax: typedBindingWithTypeSignature :: TypedTerm TypedBinding -> TypedTerm TypeSignature -> TypedTerm TypedBinding
+ Hydra.Haskell.Dsl.Syntax: typedBindingWithValueBinding :: TypedTerm TypedBinding -> TypedTerm ValueBinding -> TypedTerm TypedBinding
+ Hydra.Haskell.Dsl.Syntax: typedExpression :: TypedTerm Expression -> TypedTerm Type -> TypedTerm TypedExpression
+ Hydra.Haskell.Dsl.Syntax: typedExpressionInner :: TypedTerm TypedExpression -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: typedExpressionType :: TypedTerm TypedExpression -> TypedTerm Type
+ Hydra.Haskell.Dsl.Syntax: typedExpressionTypedExpression :: TypedName TypedExpression
+ Hydra.Haskell.Dsl.Syntax: typedExpressionWithInner :: TypedTerm TypedExpression -> TypedTerm Expression -> TypedTerm TypedExpression
+ Hydra.Haskell.Dsl.Syntax: typedExpressionWithType :: TypedTerm TypedExpression -> TypedTerm Type -> TypedTerm TypedExpression
+ Hydra.Haskell.Dsl.Syntax: typedPattern :: TypedTerm Pattern -> TypedTerm Type -> TypedTerm TypedPattern
+ Hydra.Haskell.Dsl.Syntax: typedPatternInner :: TypedTerm TypedPattern -> TypedTerm Pattern
+ Hydra.Haskell.Dsl.Syntax: typedPatternType :: TypedTerm TypedPattern -> TypedTerm Type
+ Hydra.Haskell.Dsl.Syntax: typedPatternTypedPattern :: TypedName TypedPattern
+ Hydra.Haskell.Dsl.Syntax: typedPatternWithInner :: TypedTerm TypedPattern -> TypedTerm Pattern -> TypedTerm TypedPattern
+ Hydra.Haskell.Dsl.Syntax: typedPatternWithType :: TypedTerm TypedPattern -> TypedTerm Type -> TypedTerm TypedPattern
+ Hydra.Haskell.Dsl.Syntax: unCaseRhs :: TypedTerm CaseRhs -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: unDerivingClause :: TypedTerm DerivingClause -> TypedTerm [Name]
+ Hydra.Haskell.Dsl.Syntax: unLocalBindings :: TypedTerm LocalBindings -> TypedTerm [LocalBinding]
+ Hydra.Haskell.Dsl.Syntax: unModuleName :: TypedTerm ModuleName -> TypedTerm String
+ Hydra.Haskell.Dsl.Syntax: unNamePart :: TypedTerm NamePart -> TypedTerm String
+ Hydra.Haskell.Dsl.Syntax: unRightHandSide :: TypedTerm RightHandSide -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: unStatement :: TypedTerm Statement -> TypedTerm Expression
+ Hydra.Haskell.Dsl.Syntax: unVariable :: TypedTerm Variable -> TypedTerm Name
+ Hydra.Haskell.Dsl.Syntax: valueBindingSimple :: TypedTerm SimpleValueBinding -> TypedTerm ValueBinding
+ Hydra.Haskell.Dsl.Syntax: valueBindingValueBinding :: TypedName ValueBinding
+ Hydra.Haskell.Dsl.Syntax: variable :: TypedTerm Name -> TypedTerm Variable
+ Hydra.Haskell.Dsl.Syntax: variableVariable :: TypedName Variable
+ Hydra.Haskell.Environment: instance GHC.Internal.Read.Read Hydra.Haskell.Environment.HaskellModuleMetadata
+ Hydra.Haskell.Environment: instance GHC.Internal.Show.Show Hydra.Haskell.Environment.HaskellModuleMetadata
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.Alternative
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.ApplicationDeclarationHead
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.ApplicationExpression
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.ApplicationPattern
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.ApplicationType
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.AsPattern
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.CaseExpression
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.CaseRhs
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.ClassConstraint
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.ConstrainedType
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.Constraint
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.Constructor
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.DataDeclaration
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.DataKeyword
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.Declaration
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.DeclarationHead
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.DerivingClause
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.Export
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.Expression
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.Field
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.FieldUpdate
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.FunctionType
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.IfExpression
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.Import
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.ImportExportSubspec
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.ImportModifier
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.ImportSpec
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.InfixExpression
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.InfixType
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.LambdaExpression
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.LetExpression
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.Literal
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.LocalBinding
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.LocalBindings
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.Module
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.ModuleHead
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.ModuleName
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.Name
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.NamePart
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.NamedImportExport
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.Operator
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.Pattern
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.PatternField
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.PositionalConstructor
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.QualifiedName
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.RecordConstructor
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.RecordExpression
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.RecordPattern
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.RecordUpdateExpression
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.RightHandSide
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.SectionExpression
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.SimpleValueBinding
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.Statement
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.Type
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.TypeSignature
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.TypeSynonymDeclaration
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.TypedBinding
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.TypedExpression
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.TypedPattern
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.ValueBinding
+ Hydra.Haskell.Syntax: instance GHC.Internal.Read.Read Hydra.Haskell.Syntax.Variable
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.Alternative
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.ApplicationDeclarationHead
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.ApplicationExpression
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.ApplicationPattern
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.ApplicationType
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.AsPattern
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.CaseExpression
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.CaseRhs
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.ClassConstraint
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.ConstrainedType
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.Constraint
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.Constructor
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.DataDeclaration
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.DataKeyword
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.Declaration
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.DeclarationHead
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.DerivingClause
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.Export
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.Expression
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.Field
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.FieldUpdate
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.FunctionType
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.IfExpression
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.Import
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.ImportExportSubspec
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.ImportModifier
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.ImportSpec
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.InfixExpression
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.InfixType
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.LambdaExpression
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.LetExpression
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.Literal
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.LocalBinding
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.LocalBindings
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.Module
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.ModuleHead
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.ModuleName
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.Name
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.NamePart
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.NamedImportExport
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.Operator
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.Pattern
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.PatternField
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.PositionalConstructor
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.QualifiedName
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.RecordConstructor
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.RecordExpression
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.RecordPattern
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.RecordUpdateExpression
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.RightHandSide
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.SectionExpression
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.SimpleValueBinding
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.Statement
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.Type
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.TypeSignature
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.TypeSynonymDeclaration
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.TypedBinding
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.TypedExpression
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.TypedPattern
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.ValueBinding
+ Hydra.Haskell.Syntax: instance GHC.Internal.Show.Show Hydra.Haskell.Syntax.Variable

Files

CHANGELOG.md view
@@ -15,6 +15,86 @@  --- +## [0.18.0] - 2026-09-29++Module-naming systematization release: every kernel and package module moves onto a uniform+`hydra.core.*` / `hydra.<pkg>.*` grammar, completing the package ⊃ module ⊃ definition containment+tower. The rename touches every module, definition, and cross-host reference in the codebase; this+release exists primarily to ship it as its own coordinated batch. Also lands the translingual regex+primitive pipeline and several silent-correctness fixes in the coder layer.++### Highlights++- **Module-name grammar systematization** ([#729](https://github.com/CategoricalData/hydra/issues/729)):+  every `hydra.*` module renamed onto a uniform package-derived prefix — kernel modules move to+  `hydra.core.*`, package modules to `hydra.<pkg>.*` — closing the long-standing inconsistency where+  a package name had no structural relationship to the module names it contained. The rename spans+  every host (Haskell, Java, Python, Scala, TypeScript, all four Lisp dialects) and required fixing+  stale namespace references, overlay-directory paths, and `hostOverrides` shims across every driver+  and bootstrap script that had hardcoded the old grammar. Further consolidation (a structurally+  enforced package↔prefix law) is tracked for 0.18.1. The kernel package itself is still published as+  `hydra-kernel` (its modules are under `hydra.core.*`); the `hydra-core` package rename #729 called for+  is under review because that name is taken on PyPI and npm+  ([#770](https://github.com/CategoricalData/hydra/issues/770)).+- **Translingual regex primitives** ([#603](https://github.com/CategoricalData/hydra/issues/603)):+  `hydra.lib.regex` primitives (`find`, `findAll`, `matches`, `replace`, `replaceAll`, `split`) now run+  every pattern through the shared `hydra.regex` parse/print pipeline instead of handing raw pattern+  strings to each host's native engine, so a pattern means the same thing on every host. Includes a+  host-independent conformance suite and a leftmost-longest alternation fix in the PCRE/POSIX printers.+- **Silent-corruption fixes across the coder layer**+  ([#744](https://github.com/CategoricalData/hydra/issues/744),+  [#765](https://github.com/CategoricalData/hydra/issues/765),+  [#649](https://github.com/CategoricalData/hydra/issues/649)): fixed data-corrupting bugs in the+  JSON-Schema/Avro/GraphQL/GraphSON/Protobuf coders (extended integer widths, map-key handling), the+  kernel's encode/decode generators (reversed type-parameter order on 2+-param polymorphic types), and+  the Python coder (silently dropping a module's types when types and terms share a file path).+- **Self-hosted specification docs** ([#723](https://github.com/CategoricalData/hydra/issues/723)):+  the module-reference pages under `docs/specification/` are now generated directly from the kernel+  (`bin/regenerate-spec.sh`) via a new metadata-only doc coder, rather than hand-maintained.++### New features++- **[#603](https://github.com/CategoricalData/hydra/issues/603)** host-independent regex conformance+  suite covering the minimal-core grammar (literals, classes, quantifiers, alternation, anchors,+  grouping) across all 9 hosts.+- **[#723](https://github.com/CategoricalData/hydra/issues/723)** `hydra.markdown` type module and+  `generateModuleDoc`, the metadata-only doc coder backing the self-generated spec pages.+- **[#382](https://github.com/CategoricalData/hydra/issues/382)** the Rust coder is split out of+  `hydra-ext` into its own first-class `hydra-rust` package.++### Bug fixes++- **[#744](https://github.com/CategoricalData/hydra/issues/744)** silent data corruption in+  JSON-Schema/Avro/GraphQL/GraphSON/Protobuf coders for extended integer widths and map-key handling.+- **[#765](https://github.com/CategoricalData/hydra/issues/765)** kernel encode/decode generators+  emitted reversed type-parameter order for 2+-param polymorphic types.+- **[#649](https://github.com/CategoricalData/hydra/issues/649)** Python coder silently dropped a+  module's types when types and terms targeted the same output file path.+- **[#572](https://github.com/CategoricalData/hydra/issues/572)** TypeScript kernel-JSON test+  bridge's compact-form decode heuristic mishandled nullary union arms.+- **[#761](https://github.com/CategoricalData/hydra/issues/761)** cold-seed generation ignored+  `hostOverrides.java=local`, silently pulling the published Java host jar instead.+- **[#736](https://github.com/CategoricalData/hydra/issues/736)** Java build now pins JDK 11 via a+  Gradle toolchain block, instead of depending on ambient `JAVA_HOME`.++### Improvements++- **[#327](https://github.com/CategoricalData/hydra/issues/327)** new `hydra.diff` schema-diff type+  module; `Term.Inject` comparison is now by variant name.+- **[#573](https://github.com/CategoricalData/hydra/issues/573)** per-registry publish sets (Hackage,+  Maven, PyPI, npm) are now derived from the package registry itself instead of 13 hand-maintained+  lists — closes a recurring class of silent release-time drift.+- **[#735](https://github.com/CategoricalData/hydra/issues/735)** cross-host decimal-scale test+  filtering now driven by a translingual `scaleDistinct` capability tag instead of hand-copied+  per-host skip lists.++### Documentation++- **[#655](https://github.com/CategoricalData/hydra/issues/655)** documented the overlay-emission+  "implementation wins" decision for bare primitive references (`docs/overlays.md`).++---+ ## [0.17.7] - 2026-09-14  Correctness-hardening point release on the 0.17.x line, consolidating the 0.17.6 breaking batch. It
hydra-haskell.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           hydra-haskell-version:        0.17.7+version:        0.18.0 synopsis:       Hydra's Haskell coder: emit Haskell source from Hydra modules description:    Hydra is an implementation of the LambdaGraph data model, which takes advantage of an isomorphism between labeled hypergraphs and typed lambda calculus: in Hydra, "graphs are programs, and programs are graphs". This package is Hydra's Haskell coder: it translates Hydra modules into Haskell source. The top-level entry point is moduleToHaskell (and moduleToHaskellModule for the structured AST). It builds on hydra-kernel. category:       Data@@ -27,9 +27,9 @@  library   exposed-modules:-      Hydra.Dsl.Haskell.Environment-      Hydra.Dsl.Haskell.Syntax       Hydra.Haskell.Coder+      Hydra.Haskell.Dsl.Environment+      Hydra.Haskell.Dsl.Syntax       Hydra.Haskell.Environment       Hydra.Haskell.Language       Hydra.Haskell.Operators@@ -44,6 +44,6 @@   build-depends:       base >=4.19.0 && <4.22     , containers >=0.6.7 && <0.8-    , hydra-kernel ==0.17.7+    , hydra-kernel ==0.18.0     , scientific >=0.3.7 && <0.4   default-language: Haskell2010
− src/main/haskell/Hydra/Dsl/Haskell/Environment.hs
@@ -1,273 +0,0 @@--- Note: this is an automatically generated file. Do not edit.---- | DSL functions for hydra.haskell.environment--module Hydra.Dsl.Haskell.Environment where--import qualified Hydra.Core as Core-import qualified Hydra.Haskell.Environment as Environment-import qualified Hydra.Typed as Typed-import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)-import qualified Data.Scientific as Sci-import Data.Void---- | DSL constructor for hydra.haskell.environment.HaskellModuleMetadata-haskellModuleMetadata :: Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.HaskellModuleMetadata-haskellModuleMetadata usesByteString usesInt usesMap usesSet usesVoid =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "usesByteString"),-          Core.fieldTerm = (Typed.unTypedTerm usesByteString)},-        Core.Field {-          Core.fieldName = (Core.Name "usesInt"),-          Core.fieldTerm = (Typed.unTypedTerm usesInt)},-        Core.Field {-          Core.fieldName = (Core.Name "usesMap"),-          Core.fieldTerm = (Typed.unTypedTerm usesMap)},-        Core.Field {-          Core.fieldName = (Core.Name "usesSet"),-          Core.fieldTerm = (Typed.unTypedTerm usesSet)},-        Core.Field {-          Core.fieldName = (Core.Name "usesVoid"),-          Core.fieldTerm = (Typed.unTypedTerm usesVoid)}]}))---- | DSL name token for hydra.haskell.environment.HaskellModuleMetadata-haskellModuleMetadataHaskellModuleMetadata :: Typed.TypedName Environment.HaskellModuleMetadata-haskellModuleMetadataHaskellModuleMetadata = Typed.TypedName (Core.Name "hydra.haskell.environment.HaskellModuleMetadata")---- | DSL accessor for the usesByteString field of hydra.haskell.environment.HaskellModuleMetadata-haskellModuleMetadataUsesByteString :: Typed.TypedTerm Environment.HaskellModuleMetadata -> Typed.TypedTerm Bool-haskellModuleMetadataUsesByteString x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-        Core.projectionFieldName = (Core.Name "usesByteString")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the usesInt field of hydra.haskell.environment.HaskellModuleMetadata-haskellModuleMetadataUsesInt :: Typed.TypedTerm Environment.HaskellModuleMetadata -> Typed.TypedTerm Bool-haskellModuleMetadataUsesInt x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-        Core.projectionFieldName = (Core.Name "usesInt")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the usesMap field of hydra.haskell.environment.HaskellModuleMetadata-haskellModuleMetadataUsesMap :: Typed.TypedTerm Environment.HaskellModuleMetadata -> Typed.TypedTerm Bool-haskellModuleMetadataUsesMap x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-        Core.projectionFieldName = (Core.Name "usesMap")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the usesSet field of hydra.haskell.environment.HaskellModuleMetadata-haskellModuleMetadataUsesSet :: Typed.TypedTerm Environment.HaskellModuleMetadata -> Typed.TypedTerm Bool-haskellModuleMetadataUsesSet x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-        Core.projectionFieldName = (Core.Name "usesSet")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the usesVoid field of hydra.haskell.environment.HaskellModuleMetadata-haskellModuleMetadataUsesVoid :: Typed.TypedTerm Environment.HaskellModuleMetadata -> Typed.TypedTerm Bool-haskellModuleMetadataUsesVoid x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-        Core.projectionFieldName = (Core.Name "usesVoid")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the usesByteString field of hydra.haskell.environment.HaskellModuleMetadata-haskellModuleMetadataWithUsesByteString :: Typed.TypedTerm Environment.HaskellModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.HaskellModuleMetadata-haskellModuleMetadataWithUsesByteString original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "usesByteString"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "usesInt"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-              Core.projectionFieldName = (Core.Name "usesInt")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "usesMap"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-              Core.projectionFieldName = (Core.Name "usesMap")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "usesSet"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-              Core.projectionFieldName = (Core.Name "usesSet")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "usesVoid"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-              Core.projectionFieldName = (Core.Name "usesVoid")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the usesInt field of hydra.haskell.environment.HaskellModuleMetadata-haskellModuleMetadataWithUsesInt :: Typed.TypedTerm Environment.HaskellModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.HaskellModuleMetadata-haskellModuleMetadataWithUsesInt original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "usesByteString"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-              Core.projectionFieldName = (Core.Name "usesByteString")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "usesInt"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "usesMap"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-              Core.projectionFieldName = (Core.Name "usesMap")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "usesSet"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-              Core.projectionFieldName = (Core.Name "usesSet")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "usesVoid"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-              Core.projectionFieldName = (Core.Name "usesVoid")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the usesMap field of hydra.haskell.environment.HaskellModuleMetadata-haskellModuleMetadataWithUsesMap :: Typed.TypedTerm Environment.HaskellModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.HaskellModuleMetadata-haskellModuleMetadataWithUsesMap original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "usesByteString"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-              Core.projectionFieldName = (Core.Name "usesByteString")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "usesInt"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-              Core.projectionFieldName = (Core.Name "usesInt")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "usesMap"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "usesSet"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-              Core.projectionFieldName = (Core.Name "usesSet")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "usesVoid"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-              Core.projectionFieldName = (Core.Name "usesVoid")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the usesSet field of hydra.haskell.environment.HaskellModuleMetadata-haskellModuleMetadataWithUsesSet :: Typed.TypedTerm Environment.HaskellModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.HaskellModuleMetadata-haskellModuleMetadataWithUsesSet original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "usesByteString"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-              Core.projectionFieldName = (Core.Name "usesByteString")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "usesInt"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-              Core.projectionFieldName = (Core.Name "usesInt")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "usesMap"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-              Core.projectionFieldName = (Core.Name "usesMap")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "usesSet"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "usesVoid"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-              Core.projectionFieldName = (Core.Name "usesVoid")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the usesVoid field of hydra.haskell.environment.HaskellModuleMetadata-haskellModuleMetadataWithUsesVoid :: Typed.TypedTerm Environment.HaskellModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.HaskellModuleMetadata-haskellModuleMetadataWithUsesVoid original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "usesByteString"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-              Core.projectionFieldName = (Core.Name "usesByteString")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "usesInt"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-              Core.projectionFieldName = (Core.Name "usesInt")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "usesMap"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-              Core.projectionFieldName = (Core.Name "usesMap")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "usesSet"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.environment.HaskellModuleMetadata"),-              Core.projectionFieldName = (Core.Name "usesSet")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "usesVoid"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
− src/main/haskell/Hydra/Dsl/Haskell/Syntax.hs
@@ -1,4407 +0,0 @@--- Note: this is an automatically generated file. Do not edit.---- | DSL functions for hydra.haskell.syntax--module Hydra.Dsl.Haskell.Syntax where--import qualified Hydra.Core as Core-import qualified Hydra.Dsl.Core as DslCore-import qualified Hydra.Haskell.Syntax as Syntax-import qualified Hydra.Typed as Typed-import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)-import qualified Data.Scientific as Sci-import Data.Void---- | DSL constructor for hydra.haskell.syntax.Alternative-alternative :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.CaseRhs -> Typed.TypedTerm (Maybe Syntax.LocalBindings) -> Typed.TypedTerm Syntax.Alternative-alternative pattern rhs binds =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.Alternative"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "pattern"),-          Core.fieldTerm = (Typed.unTypedTerm pattern)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm rhs)},-        Core.Field {-          Core.fieldName = (Core.Name "binds"),-          Core.fieldTerm = (Typed.unTypedTerm binds)}]}))---- | DSL name token for hydra.haskell.syntax.Alternative-alternativeAlternative :: Typed.TypedName Syntax.Alternative-alternativeAlternative = Typed.TypedName (Core.Name "hydra.haskell.syntax.Alternative")---- | DSL accessor for the binds field of hydra.haskell.syntax.Alternative-alternativeBinds :: Typed.TypedTerm Syntax.Alternative -> Typed.TypedTerm (Maybe Syntax.LocalBindings)-alternativeBinds x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Alternative"),-        Core.projectionFieldName = (Core.Name "binds")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the pattern field of hydra.haskell.syntax.Alternative-alternativePattern :: Typed.TypedTerm Syntax.Alternative -> Typed.TypedTerm Syntax.Pattern-alternativePattern x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Alternative"),-        Core.projectionFieldName = (Core.Name "pattern")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the rhs field of hydra.haskell.syntax.Alternative-alternativeRhs :: Typed.TypedTerm Syntax.Alternative -> Typed.TypedTerm Syntax.CaseRhs-alternativeRhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Alternative"),-        Core.projectionFieldName = (Core.Name "rhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the binds field of hydra.haskell.syntax.Alternative-alternativeWithBinds :: Typed.TypedTerm Syntax.Alternative -> Typed.TypedTerm (Maybe Syntax.LocalBindings) -> Typed.TypedTerm Syntax.Alternative-alternativeWithBinds original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.Alternative"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "pattern"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Alternative"),-              Core.projectionFieldName = (Core.Name "pattern")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Alternative"),-              Core.projectionFieldName = (Core.Name "rhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "binds"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the pattern field of hydra.haskell.syntax.Alternative-alternativeWithPattern :: Typed.TypedTerm Syntax.Alternative -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.Alternative-alternativeWithPattern original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.Alternative"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "pattern"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Alternative"),-              Core.projectionFieldName = (Core.Name "rhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "binds"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Alternative"),-              Core.projectionFieldName = (Core.Name "binds")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the rhs field of hydra.haskell.syntax.Alternative-alternativeWithRhs :: Typed.TypedTerm Syntax.Alternative -> Typed.TypedTerm Syntax.CaseRhs -> Typed.TypedTerm Syntax.Alternative-alternativeWithRhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.Alternative"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "pattern"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Alternative"),-              Core.projectionFieldName = (Core.Name "pattern")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "binds"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Alternative"),-              Core.projectionFieldName = (Core.Name "binds")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.haskell.syntax.ApplicationDeclarationHead-applicationDeclarationHead :: Typed.TypedTerm Syntax.DeclarationHead -> Typed.TypedTerm Syntax.Variable -> Typed.TypedTerm Syntax.ApplicationDeclarationHead-applicationDeclarationHead function operand =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.ApplicationDeclarationHead"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "function"),-          Core.fieldTerm = (Typed.unTypedTerm function)},-        Core.Field {-          Core.fieldName = (Core.Name "operand"),-          Core.fieldTerm = (Typed.unTypedTerm operand)}]}))---- | DSL name token for hydra.haskell.syntax.ApplicationDeclarationHead-applicationDeclarationHeadApplicationDeclarationHead :: Typed.TypedName Syntax.ApplicationDeclarationHead-applicationDeclarationHeadApplicationDeclarationHead =-    Typed.TypedName (Core.Name "hydra.haskell.syntax.ApplicationDeclarationHead")---- | DSL accessor for the function field of hydra.haskell.syntax.ApplicationDeclarationHead-applicationDeclarationHeadFunction :: Typed.TypedTerm Syntax.ApplicationDeclarationHead -> Typed.TypedTerm Syntax.DeclarationHead-applicationDeclarationHeadFunction x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ApplicationDeclarationHead"),-        Core.projectionFieldName = (Core.Name "function")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the operand field of hydra.haskell.syntax.ApplicationDeclarationHead-applicationDeclarationHeadOperand :: Typed.TypedTerm Syntax.ApplicationDeclarationHead -> Typed.TypedTerm Syntax.Variable-applicationDeclarationHeadOperand x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ApplicationDeclarationHead"),-        Core.projectionFieldName = (Core.Name "operand")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the function field of hydra.haskell.syntax.ApplicationDeclarationHead-applicationDeclarationHeadWithFunction :: Typed.TypedTerm Syntax.ApplicationDeclarationHead -> Typed.TypedTerm Syntax.DeclarationHead -> Typed.TypedTerm Syntax.ApplicationDeclarationHead-applicationDeclarationHeadWithFunction original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.ApplicationDeclarationHead"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "function"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "operand"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ApplicationDeclarationHead"),-              Core.projectionFieldName = (Core.Name "operand")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the operand field of hydra.haskell.syntax.ApplicationDeclarationHead-applicationDeclarationHeadWithOperand :: Typed.TypedTerm Syntax.ApplicationDeclarationHead -> Typed.TypedTerm Syntax.Variable -> Typed.TypedTerm Syntax.ApplicationDeclarationHead-applicationDeclarationHeadWithOperand original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.ApplicationDeclarationHead"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "function"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ApplicationDeclarationHead"),-              Core.projectionFieldName = (Core.Name "function")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "operand"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.haskell.syntax.ApplicationExpression-applicationExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ApplicationExpression-applicationExpression function argument =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.ApplicationExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "function"),-          Core.fieldTerm = (Typed.unTypedTerm function)},-        Core.Field {-          Core.fieldName = (Core.Name "argument"),-          Core.fieldTerm = (Typed.unTypedTerm argument)}]}))---- | DSL name token for hydra.haskell.syntax.ApplicationExpression-applicationExpressionApplicationExpression :: Typed.TypedName Syntax.ApplicationExpression-applicationExpressionApplicationExpression = Typed.TypedName (Core.Name "hydra.haskell.syntax.ApplicationExpression")---- | DSL accessor for the argument field of hydra.haskell.syntax.ApplicationExpression-applicationExpressionArgument :: Typed.TypedTerm Syntax.ApplicationExpression -> Typed.TypedTerm Syntax.Expression-applicationExpressionArgument x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ApplicationExpression"),-        Core.projectionFieldName = (Core.Name "argument")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the function field of hydra.haskell.syntax.ApplicationExpression-applicationExpressionFunction :: Typed.TypedTerm Syntax.ApplicationExpression -> Typed.TypedTerm Syntax.Expression-applicationExpressionFunction x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ApplicationExpression"),-        Core.projectionFieldName = (Core.Name "function")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the argument field of hydra.haskell.syntax.ApplicationExpression-applicationExpressionWithArgument :: Typed.TypedTerm Syntax.ApplicationExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ApplicationExpression-applicationExpressionWithArgument original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.ApplicationExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "function"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ApplicationExpression"),-              Core.projectionFieldName = (Core.Name "function")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "argument"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the function field of hydra.haskell.syntax.ApplicationExpression-applicationExpressionWithFunction :: Typed.TypedTerm Syntax.ApplicationExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ApplicationExpression-applicationExpressionWithFunction original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.ApplicationExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "function"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "argument"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ApplicationExpression"),-              Core.projectionFieldName = (Core.Name "argument")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.haskell.syntax.ApplicationPattern-applicationPattern :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.ApplicationPattern-applicationPattern name args =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.ApplicationPattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "args"),-          Core.fieldTerm = (Typed.unTypedTerm args)}]}))---- | DSL name token for hydra.haskell.syntax.ApplicationPattern-applicationPatternApplicationPattern :: Typed.TypedName Syntax.ApplicationPattern-applicationPatternApplicationPattern = Typed.TypedName (Core.Name "hydra.haskell.syntax.ApplicationPattern")---- | DSL accessor for the args field of hydra.haskell.syntax.ApplicationPattern-applicationPatternArgs :: Typed.TypedTerm Syntax.ApplicationPattern -> Typed.TypedTerm [Syntax.Pattern]-applicationPatternArgs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ApplicationPattern"),-        Core.projectionFieldName = (Core.Name "args")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the name field of hydra.haskell.syntax.ApplicationPattern-applicationPatternName :: Typed.TypedTerm Syntax.ApplicationPattern -> Typed.TypedTerm Syntax.Name-applicationPatternName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ApplicationPattern"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the args field of hydra.haskell.syntax.ApplicationPattern-applicationPatternWithArgs :: Typed.TypedTerm Syntax.ApplicationPattern -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.ApplicationPattern-applicationPatternWithArgs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.ApplicationPattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ApplicationPattern"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "args"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the name field of hydra.haskell.syntax.ApplicationPattern-applicationPatternWithName :: Typed.TypedTerm Syntax.ApplicationPattern -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ApplicationPattern-applicationPatternWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.ApplicationPattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "args"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ApplicationPattern"),-              Core.projectionFieldName = (Core.Name "args")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.haskell.syntax.ApplicationType-applicationType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ApplicationType-applicationType context argument =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.ApplicationType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "context"),-          Core.fieldTerm = (Typed.unTypedTerm context)},-        Core.Field {-          Core.fieldName = (Core.Name "argument"),-          Core.fieldTerm = (Typed.unTypedTerm argument)}]}))---- | DSL name token for hydra.haskell.syntax.ApplicationType-applicationTypeApplicationType :: Typed.TypedName Syntax.ApplicationType-applicationTypeApplicationType = Typed.TypedName (Core.Name "hydra.haskell.syntax.ApplicationType")---- | DSL accessor for the argument field of hydra.haskell.syntax.ApplicationType-applicationTypeArgument :: Typed.TypedTerm Syntax.ApplicationType -> Typed.TypedTerm Syntax.Type-applicationTypeArgument x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ApplicationType"),-        Core.projectionFieldName = (Core.Name "argument")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the context field of hydra.haskell.syntax.ApplicationType-applicationTypeContext :: Typed.TypedTerm Syntax.ApplicationType -> Typed.TypedTerm Syntax.Type-applicationTypeContext x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ApplicationType"),-        Core.projectionFieldName = (Core.Name "context")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the argument field of hydra.haskell.syntax.ApplicationType-applicationTypeWithArgument :: Typed.TypedTerm Syntax.ApplicationType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ApplicationType-applicationTypeWithArgument original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.ApplicationType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "context"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ApplicationType"),-              Core.projectionFieldName = (Core.Name "context")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "argument"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the context field of hydra.haskell.syntax.ApplicationType-applicationTypeWithContext :: Typed.TypedTerm Syntax.ApplicationType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ApplicationType-applicationTypeWithContext original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.ApplicationType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "context"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "argument"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ApplicationType"),-              Core.projectionFieldName = (Core.Name "argument")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.haskell.syntax.AsPattern-asPattern :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.AsPattern-asPattern name inner =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.AsPattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "inner"),-          Core.fieldTerm = (Typed.unTypedTerm inner)}]}))---- | DSL name token for hydra.haskell.syntax.AsPattern-asPatternAsPattern :: Typed.TypedName Syntax.AsPattern-asPatternAsPattern = Typed.TypedName (Core.Name "hydra.haskell.syntax.AsPattern")---- | DSL accessor for the inner field of hydra.haskell.syntax.AsPattern-asPatternInner :: Typed.TypedTerm Syntax.AsPattern -> Typed.TypedTerm Syntax.Pattern-asPatternInner x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.AsPattern"),-        Core.projectionFieldName = (Core.Name "inner")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the name field of hydra.haskell.syntax.AsPattern-asPatternName :: Typed.TypedTerm Syntax.AsPattern -> Typed.TypedTerm Syntax.Name-asPatternName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.AsPattern"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the inner field of hydra.haskell.syntax.AsPattern-asPatternWithInner :: Typed.TypedTerm Syntax.AsPattern -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.AsPattern-asPatternWithInner original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.AsPattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.AsPattern"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inner"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the name field of hydra.haskell.syntax.AsPattern-asPatternWithName :: Typed.TypedTerm Syntax.AsPattern -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.AsPattern-asPatternWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.AsPattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "inner"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.AsPattern"),-              Core.projectionFieldName = (Core.Name "inner")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.haskell.syntax.CaseExpression-caseExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm [Syntax.Alternative] -> Typed.TypedTerm Syntax.CaseExpression-caseExpression case_ alternatives =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.CaseExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "case"),-          Core.fieldTerm = (Typed.unTypedTerm case_)},-        Core.Field {-          Core.fieldName = (Core.Name "alternatives"),-          Core.fieldTerm = (Typed.unTypedTerm alternatives)}]}))---- | DSL accessor for the alternatives field of hydra.haskell.syntax.CaseExpression-caseExpressionAlternatives :: Typed.TypedTerm Syntax.CaseExpression -> Typed.TypedTerm [Syntax.Alternative]-caseExpressionAlternatives x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.CaseExpression"),-        Core.projectionFieldName = (Core.Name "alternatives")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the case field of hydra.haskell.syntax.CaseExpression-caseExpressionCase :: Typed.TypedTerm Syntax.CaseExpression -> Typed.TypedTerm Syntax.Expression-caseExpressionCase x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.CaseExpression"),-        Core.projectionFieldName = (Core.Name "case")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.CaseExpression-caseExpressionCaseExpression :: Typed.TypedName Syntax.CaseExpression-caseExpressionCaseExpression = Typed.TypedName (Core.Name "hydra.haskell.syntax.CaseExpression")---- | DSL updater for the alternatives field of hydra.haskell.syntax.CaseExpression-caseExpressionWithAlternatives :: Typed.TypedTerm Syntax.CaseExpression -> Typed.TypedTerm [Syntax.Alternative] -> Typed.TypedTerm Syntax.CaseExpression-caseExpressionWithAlternatives original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.CaseExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "case"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.CaseExpression"),-              Core.projectionFieldName = (Core.Name "case")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "alternatives"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the case field of hydra.haskell.syntax.CaseExpression-caseExpressionWithCase :: Typed.TypedTerm Syntax.CaseExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.CaseExpression-caseExpressionWithCase original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.CaseExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "case"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "alternatives"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.CaseExpression"),-              Core.projectionFieldName = (Core.Name "alternatives")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.haskell.syntax.CaseRhs wrapper-caseRhs :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.CaseRhs-caseRhs x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.haskell.syntax.CaseRhs"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.CaseRhs-caseRhsCaseRhs :: Typed.TypedName Syntax.CaseRhs-caseRhsCaseRhs = Typed.TypedName (Core.Name "hydra.haskell.syntax.CaseRhs")---- | DSL constructor for hydra.haskell.syntax.ClassConstraint-classConstraint :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.ClassConstraint-classConstraint name types =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.ClassConstraint"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "types"),-          Core.fieldTerm = (Typed.unTypedTerm types)}]}))---- | DSL name token for hydra.haskell.syntax.ClassConstraint-classConstraintClassConstraint :: Typed.TypedName Syntax.ClassConstraint-classConstraintClassConstraint = Typed.TypedName (Core.Name "hydra.haskell.syntax.ClassConstraint")---- | DSL accessor for the name field of hydra.haskell.syntax.ClassConstraint-classConstraintName :: Typed.TypedTerm Syntax.ClassConstraint -> Typed.TypedTerm Syntax.Name-classConstraintName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ClassConstraint"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the types field of hydra.haskell.syntax.ClassConstraint-classConstraintTypes :: Typed.TypedTerm Syntax.ClassConstraint -> Typed.TypedTerm [Syntax.Type]-classConstraintTypes x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ClassConstraint"),-        Core.projectionFieldName = (Core.Name "types")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the name field of hydra.haskell.syntax.ClassConstraint-classConstraintWithName :: Typed.TypedTerm Syntax.ClassConstraint -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ClassConstraint-classConstraintWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.ClassConstraint"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "types"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ClassConstraint"),-              Core.projectionFieldName = (Core.Name "types")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the types field of hydra.haskell.syntax.ClassConstraint-classConstraintWithTypes :: Typed.TypedTerm Syntax.ClassConstraint -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.ClassConstraint-classConstraintWithTypes original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.ClassConstraint"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ClassConstraint"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "types"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.haskell.syntax.ConstrainedType-constrainedType :: Typed.TypedTerm Syntax.Constraint -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ConstrainedType-constrainedType ctx type_ =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.ConstrainedType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "ctx"),-          Core.fieldTerm = (Typed.unTypedTerm ctx)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)}]}))---- | DSL name token for hydra.haskell.syntax.ConstrainedType-constrainedTypeConstrainedType :: Typed.TypedName Syntax.ConstrainedType-constrainedTypeConstrainedType = Typed.TypedName (Core.Name "hydra.haskell.syntax.ConstrainedType")---- | DSL accessor for the ctx field of hydra.haskell.syntax.ConstrainedType-constrainedTypeCtx :: Typed.TypedTerm Syntax.ConstrainedType -> Typed.TypedTerm Syntax.Constraint-constrainedTypeCtx x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ConstrainedType"),-        Core.projectionFieldName = (Core.Name "ctx")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.haskell.syntax.ConstrainedType-constrainedTypeType :: Typed.TypedTerm Syntax.ConstrainedType -> Typed.TypedTerm Syntax.Type-constrainedTypeType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ConstrainedType"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the ctx field of hydra.haskell.syntax.ConstrainedType-constrainedTypeWithCtx :: Typed.TypedTerm Syntax.ConstrainedType -> Typed.TypedTerm Syntax.Constraint -> Typed.TypedTerm Syntax.ConstrainedType-constrainedTypeWithCtx original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.ConstrainedType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "ctx"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ConstrainedType"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.haskell.syntax.ConstrainedType-constrainedTypeWithType :: Typed.TypedTerm Syntax.ConstrainedType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ConstrainedType-constrainedTypeWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.ConstrainedType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "ctx"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ConstrainedType"),-              Core.projectionFieldName = (Core.Name "ctx")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the class variant of hydra.haskell.syntax.Constraint-constraintClass :: Typed.TypedTerm Syntax.ClassConstraint -> Typed.TypedTerm Syntax.Constraint-constraintClass x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Constraint"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "class"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.haskell.syntax.Constraint-constraintConstraint :: Typed.TypedName Syntax.Constraint-constraintConstraint = Typed.TypedName (Core.Name "hydra.haskell.syntax.Constraint")---- | DSL injection for the tuple variant of hydra.haskell.syntax.Constraint-constraintTuple :: Typed.TypedTerm [Syntax.Constraint] -> Typed.TypedTerm Syntax.Constraint-constraintTuple x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Constraint"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "tuple"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.haskell.syntax.Constructor-constructorConstructor :: Typed.TypedName Syntax.Constructor-constructorConstructor = Typed.TypedName (Core.Name "hydra.haskell.syntax.Constructor")---- | DSL injection for the ordinary variant of hydra.haskell.syntax.Constructor-constructorOrdinary :: Typed.TypedTerm Syntax.PositionalConstructor -> Typed.TypedTerm Syntax.Constructor-constructorOrdinary x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Constructor"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "ordinary"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the record variant of hydra.haskell.syntax.Constructor-constructorRecord :: Typed.TypedTerm Syntax.RecordConstructor -> Typed.TypedTerm Syntax.Constructor-constructorRecord x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Constructor"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "record"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.haskell.syntax.DataDeclaration-dataDeclaration :: Typed.TypedTerm Syntax.DataKeyword -> Typed.TypedTerm [Syntax.Constraint] -> Typed.TypedTerm Syntax.DeclarationHead -> Typed.TypedTerm [Syntax.Constructor] -> Typed.TypedTerm [Syntax.DerivingClause] -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.DataDeclaration-dataDeclaration keyword context head constructors deriving_ comments =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "keyword"),-          Core.fieldTerm = (Typed.unTypedTerm keyword)},-        Core.Field {-          Core.fieldName = (Core.Name "context"),-          Core.fieldTerm = (Typed.unTypedTerm context)},-        Core.Field {-          Core.fieldName = (Core.Name "head"),-          Core.fieldTerm = (Typed.unTypedTerm head)},-        Core.Field {-          Core.fieldName = (Core.Name "constructors"),-          Core.fieldTerm = (Typed.unTypedTerm constructors)},-        Core.Field {-          Core.fieldName = (Core.Name "deriving"),-          Core.fieldTerm = (Typed.unTypedTerm deriving_)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm comments)}]}))---- | DSL accessor for the comments field of hydra.haskell.syntax.DataDeclaration-dataDeclarationComments :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm (Maybe String)-dataDeclarationComments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-        Core.projectionFieldName = (Core.Name "comments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the constructors field of hydra.haskell.syntax.DataDeclaration-dataDeclarationConstructors :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm [Syntax.Constructor]-dataDeclarationConstructors x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-        Core.projectionFieldName = (Core.Name "constructors")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the context field of hydra.haskell.syntax.DataDeclaration-dataDeclarationContext :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm [Syntax.Constraint]-dataDeclarationContext x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-        Core.projectionFieldName = (Core.Name "context")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.DataDeclaration-dataDeclarationDataDeclaration :: Typed.TypedName Syntax.DataDeclaration-dataDeclarationDataDeclaration = Typed.TypedName (Core.Name "hydra.haskell.syntax.DataDeclaration")---- | DSL accessor for the deriving field of hydra.haskell.syntax.DataDeclaration-dataDeclarationDeriving :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm [Syntax.DerivingClause]-dataDeclarationDeriving x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-        Core.projectionFieldName = (Core.Name "deriving")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the head field of hydra.haskell.syntax.DataDeclaration-dataDeclarationHead :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm Syntax.DeclarationHead-dataDeclarationHead x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-        Core.projectionFieldName = (Core.Name "head")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the keyword field of hydra.haskell.syntax.DataDeclaration-dataDeclarationKeyword :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm Syntax.DataKeyword-dataDeclarationKeyword x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-        Core.projectionFieldName = (Core.Name "keyword")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the comments field of hydra.haskell.syntax.DataDeclaration-dataDeclarationWithComments :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.DataDeclaration-dataDeclarationWithComments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "keyword"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "keyword")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "context"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "context")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "head"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "head")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "constructors"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "constructors")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "deriving"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "deriving")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the constructors field of hydra.haskell.syntax.DataDeclaration-dataDeclarationWithConstructors :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm [Syntax.Constructor] -> Typed.TypedTerm Syntax.DataDeclaration-dataDeclarationWithConstructors original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "keyword"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "keyword")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "context"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "context")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "head"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "head")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "constructors"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "deriving"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "deriving")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the context field of hydra.haskell.syntax.DataDeclaration-dataDeclarationWithContext :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm [Syntax.Constraint] -> Typed.TypedTerm Syntax.DataDeclaration-dataDeclarationWithContext original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "keyword"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "keyword")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "context"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "head"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "head")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "constructors"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "constructors")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "deriving"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "deriving")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the deriving field of hydra.haskell.syntax.DataDeclaration-dataDeclarationWithDeriving :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm [Syntax.DerivingClause] -> Typed.TypedTerm Syntax.DataDeclaration-dataDeclarationWithDeriving original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "keyword"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "keyword")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "context"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "context")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "head"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "head")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "constructors"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "constructors")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "deriving"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the head field of hydra.haskell.syntax.DataDeclaration-dataDeclarationWithHead :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm Syntax.DeclarationHead -> Typed.TypedTerm Syntax.DataDeclaration-dataDeclarationWithHead original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "keyword"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "keyword")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "context"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "context")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "head"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "constructors"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "constructors")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "deriving"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "deriving")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the keyword field of hydra.haskell.syntax.DataDeclaration-dataDeclarationWithKeyword :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm Syntax.DataKeyword -> Typed.TypedTerm Syntax.DataDeclaration-dataDeclarationWithKeyword original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "keyword"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "context"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "context")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "head"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "head")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "constructors"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "constructors")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "deriving"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "deriving")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.DataDeclaration"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the data variant of hydra.haskell.syntax.DataKeyword-dataKeywordData :: Typed.TypedTerm Syntax.DataKeyword-dataKeywordData =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.DataKeyword"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "data"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.haskell.syntax.DataKeyword-dataKeywordDataKeyword :: Typed.TypedName Syntax.DataKeyword-dataKeywordDataKeyword = Typed.TypedName (Core.Name "hydra.haskell.syntax.DataKeyword")---- | DSL injection for the newtype variant of hydra.haskell.syntax.DataKeyword-dataKeywordNewtype :: Typed.TypedTerm Syntax.DataKeyword-dataKeywordNewtype =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.DataKeyword"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "newtype"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the data variant of hydra.haskell.syntax.Declaration-declarationData :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm Syntax.Declaration-declarationData x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Declaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "data"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.haskell.syntax.Declaration-declarationDeclaration :: Typed.TypedName Syntax.Declaration-declarationDeclaration = Typed.TypedName (Core.Name "hydra.haskell.syntax.Declaration")---- | DSL injection for the application variant of hydra.haskell.syntax.DeclarationHead-declarationHeadApplication :: Typed.TypedTerm Syntax.ApplicationDeclarationHead -> Typed.TypedTerm Syntax.DeclarationHead-declarationHeadApplication x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.DeclarationHead"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "application"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.haskell.syntax.DeclarationHead-declarationHeadDeclarationHead :: Typed.TypedName Syntax.DeclarationHead-declarationHeadDeclarationHead = Typed.TypedName (Core.Name "hydra.haskell.syntax.DeclarationHead")---- | DSL injection for the simple variant of hydra.haskell.syntax.DeclarationHead-declarationHeadSimple :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.DeclarationHead-declarationHeadSimple x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.DeclarationHead"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "simple"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the type variant of hydra.haskell.syntax.Declaration-declarationType :: Typed.TypedTerm Syntax.TypeSynonymDeclaration -> Typed.TypedTerm Syntax.Declaration-declarationType x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Declaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "type"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the typedBinding variant of hydra.haskell.syntax.Declaration-declarationTypedBinding :: Typed.TypedTerm Syntax.TypedBinding -> Typed.TypedTerm Syntax.Declaration-declarationTypedBinding x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Declaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "typedBinding"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the valueBinding variant of hydra.haskell.syntax.Declaration-declarationValueBinding :: Typed.TypedTerm Syntax.ValueBinding -> Typed.TypedTerm Syntax.Declaration-declarationValueBinding x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Declaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "valueBinding"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for the hydra.haskell.syntax.DerivingClause wrapper-derivingClause :: Typed.TypedTerm [Syntax.Name] -> Typed.TypedTerm Syntax.DerivingClause-derivingClause x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.haskell.syntax.DerivingClause"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.DerivingClause-derivingClauseDerivingClause :: Typed.TypedName Syntax.DerivingClause-derivingClauseDerivingClause = Typed.TypedName (Core.Name "hydra.haskell.syntax.DerivingClause")---- | DSL injection for the declaration variant of hydra.haskell.syntax.Export-exportDeclaration :: Typed.TypedTerm Syntax.NamedImportExport -> Typed.TypedTerm Syntax.Export-exportDeclaration x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Export"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "declaration"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.haskell.syntax.Export-exportExport :: Typed.TypedName Syntax.Export-exportExport = Typed.TypedName (Core.Name "hydra.haskell.syntax.Export")---- | DSL injection for the module variant of hydra.haskell.syntax.Export-exportModule :: Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm Syntax.Export-exportModule x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Export"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "module"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the application variant of hydra.haskell.syntax.Expression-expressionApplication :: Typed.TypedTerm Syntax.ApplicationExpression -> Typed.TypedTerm Syntax.Expression-expressionApplication x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "application"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the case variant of hydra.haskell.syntax.Expression-expressionCase :: Typed.TypedTerm Syntax.CaseExpression -> Typed.TypedTerm Syntax.Expression-expressionCase x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "case"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the constructRecord variant of hydra.haskell.syntax.Expression-expressionConstructRecord :: Typed.TypedTerm Syntax.RecordExpression -> Typed.TypedTerm Syntax.Expression-expressionConstructRecord x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "constructRecord"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the do variant of hydra.haskell.syntax.Expression-expressionDo :: Typed.TypedTerm [Syntax.Statement] -> Typed.TypedTerm Syntax.Expression-expressionDo x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "do"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.haskell.syntax.Expression-expressionExpression :: Typed.TypedName Syntax.Expression-expressionExpression = Typed.TypedName (Core.Name "hydra.haskell.syntax.Expression")---- | DSL injection for the if variant of hydra.haskell.syntax.Expression-expressionIf :: Typed.TypedTerm Syntax.IfExpression -> Typed.TypedTerm Syntax.Expression-expressionIf x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "if"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the infixApplication variant of hydra.haskell.syntax.Expression-expressionInfixApplication :: Typed.TypedTerm Syntax.InfixExpression -> Typed.TypedTerm Syntax.Expression-expressionInfixApplication x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "infixApplication"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the lambda variant of hydra.haskell.syntax.Expression-expressionLambda :: Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.Expression-expressionLambda x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "lambda"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the leftSection variant of hydra.haskell.syntax.Expression-expressionLeftSection :: Typed.TypedTerm Syntax.SectionExpression -> Typed.TypedTerm Syntax.Expression-expressionLeftSection x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "leftSection"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the let variant of hydra.haskell.syntax.Expression-expressionLet :: Typed.TypedTerm Syntax.LetExpression -> Typed.TypedTerm Syntax.Expression-expressionLet x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "let"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the list variant of hydra.haskell.syntax.Expression-expressionList :: Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.Expression-expressionList x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "list"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the literal variant of hydra.haskell.syntax.Expression-expressionLiteral :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Syntax.Expression-expressionLiteral x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "literal"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the rightSection variant of hydra.haskell.syntax.Expression-expressionRightSection :: Typed.TypedTerm Syntax.SectionExpression -> Typed.TypedTerm Syntax.Expression-expressionRightSection x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "rightSection"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the tuple variant of hydra.haskell.syntax.Expression-expressionTuple :: Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.Expression-expressionTuple x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "tuple"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the typeSignature variant of hydra.haskell.syntax.Expression-expressionTypeSignature :: Typed.TypedTerm Syntax.TypedExpression -> Typed.TypedTerm Syntax.Expression-expressionTypeSignature x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "typeSignature"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the updateRecord variant of hydra.haskell.syntax.Expression-expressionUpdateRecord :: Typed.TypedTerm Syntax.RecordUpdateExpression -> Typed.TypedTerm Syntax.Expression-expressionUpdateRecord x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "updateRecord"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the variable variant of hydra.haskell.syntax.Expression-expressionVariable :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Expression-expressionVariable x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "variable"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.haskell.syntax.Field-field :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.Field-field name type_ comments =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.Field"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm comments)}]}))---- | DSL accessor for the comments field of hydra.haskell.syntax.Field-fieldComments :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm (Maybe String)-fieldComments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Field"),-        Core.projectionFieldName = (Core.Name "comments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.Field-fieldField :: Typed.TypedName Syntax.Field-fieldField = Typed.TypedName (Core.Name "hydra.haskell.syntax.Field")---- | DSL accessor for the name field of hydra.haskell.syntax.Field-fieldName :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm Syntax.Name-fieldName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Field"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.haskell.syntax.Field-fieldType :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm Syntax.Type-fieldType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Field"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL constructor for hydra.haskell.syntax.FieldUpdate-fieldUpdate :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.FieldUpdate-fieldUpdate name value =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.FieldUpdate"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Typed.unTypedTerm value)}]}))---- | DSL name token for hydra.haskell.syntax.FieldUpdate-fieldUpdateFieldUpdate :: Typed.TypedName Syntax.FieldUpdate-fieldUpdateFieldUpdate = Typed.TypedName (Core.Name "hydra.haskell.syntax.FieldUpdate")---- | DSL accessor for the name field of hydra.haskell.syntax.FieldUpdate-fieldUpdateName :: Typed.TypedTerm Syntax.FieldUpdate -> Typed.TypedTerm Syntax.Name-fieldUpdateName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.FieldUpdate"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the value field of hydra.haskell.syntax.FieldUpdate-fieldUpdateValue :: Typed.TypedTerm Syntax.FieldUpdate -> Typed.TypedTerm Syntax.Expression-fieldUpdateValue x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.FieldUpdate"),-        Core.projectionFieldName = (Core.Name "value")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the name field of hydra.haskell.syntax.FieldUpdate-fieldUpdateWithName :: Typed.TypedTerm Syntax.FieldUpdate -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.FieldUpdate-fieldUpdateWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.FieldUpdate"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.FieldUpdate"),-              Core.projectionFieldName = (Core.Name "value")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the value field of hydra.haskell.syntax.FieldUpdate-fieldUpdateWithValue :: Typed.TypedTerm Syntax.FieldUpdate -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.FieldUpdate-fieldUpdateWithValue original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.FieldUpdate"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.FieldUpdate"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the comments field of hydra.haskell.syntax.Field-fieldWithComments :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.Field-fieldWithComments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.Field"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Field"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Field"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the name field of hydra.haskell.syntax.Field-fieldWithName :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Field-fieldWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.Field"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Field"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Field"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.haskell.syntax.Field-fieldWithType :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Field-fieldWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.Field"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Field"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Field"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.haskell.syntax.FunctionType-functionType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.FunctionType-functionType domain codomain =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.FunctionType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "domain"),-          Core.fieldTerm = (Typed.unTypedTerm domain)},-        Core.Field {-          Core.fieldName = (Core.Name "codomain"),-          Core.fieldTerm = (Typed.unTypedTerm codomain)}]}))---- | DSL accessor for the codomain field of hydra.haskell.syntax.FunctionType-functionTypeCodomain :: Typed.TypedTerm Syntax.FunctionType -> Typed.TypedTerm Syntax.Type-functionTypeCodomain x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.FunctionType"),-        Core.projectionFieldName = (Core.Name "codomain")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the domain field of hydra.haskell.syntax.FunctionType-functionTypeDomain :: Typed.TypedTerm Syntax.FunctionType -> Typed.TypedTerm Syntax.Type-functionTypeDomain x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.FunctionType"),-        Core.projectionFieldName = (Core.Name "domain")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.FunctionType-functionTypeFunctionType :: Typed.TypedName Syntax.FunctionType-functionTypeFunctionType = Typed.TypedName (Core.Name "hydra.haskell.syntax.FunctionType")---- | DSL updater for the codomain field of hydra.haskell.syntax.FunctionType-functionTypeWithCodomain :: Typed.TypedTerm Syntax.FunctionType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.FunctionType-functionTypeWithCodomain original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.FunctionType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "domain"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.FunctionType"),-              Core.projectionFieldName = (Core.Name "domain")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "codomain"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the domain field of hydra.haskell.syntax.FunctionType-functionTypeWithDomain :: Typed.TypedTerm Syntax.FunctionType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.FunctionType-functionTypeWithDomain original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.FunctionType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "domain"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "codomain"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.FunctionType"),-              Core.projectionFieldName = (Core.Name "codomain")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.haskell.syntax.IfExpression-ifExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.IfExpression-ifExpression condition then_ else_ =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.IfExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "condition"),-          Core.fieldTerm = (Typed.unTypedTerm condition)},-        Core.Field {-          Core.fieldName = (Core.Name "then"),-          Core.fieldTerm = (Typed.unTypedTerm then_)},-        Core.Field {-          Core.fieldName = (Core.Name "else"),-          Core.fieldTerm = (Typed.unTypedTerm else_)}]}))---- | DSL accessor for the condition field of hydra.haskell.syntax.IfExpression-ifExpressionCondition :: Typed.TypedTerm Syntax.IfExpression -> Typed.TypedTerm Syntax.Expression-ifExpressionCondition x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.IfExpression"),-        Core.projectionFieldName = (Core.Name "condition")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the else field of hydra.haskell.syntax.IfExpression-ifExpressionElse :: Typed.TypedTerm Syntax.IfExpression -> Typed.TypedTerm Syntax.Expression-ifExpressionElse x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.IfExpression"),-        Core.projectionFieldName = (Core.Name "else")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.IfExpression-ifExpressionIfExpression :: Typed.TypedName Syntax.IfExpression-ifExpressionIfExpression = Typed.TypedName (Core.Name "hydra.haskell.syntax.IfExpression")---- | DSL accessor for the then field of hydra.haskell.syntax.IfExpression-ifExpressionThen :: Typed.TypedTerm Syntax.IfExpression -> Typed.TypedTerm Syntax.Expression-ifExpressionThen x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.IfExpression"),-        Core.projectionFieldName = (Core.Name "then")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the condition field of hydra.haskell.syntax.IfExpression-ifExpressionWithCondition :: Typed.TypedTerm Syntax.IfExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.IfExpression-ifExpressionWithCondition original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.IfExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "condition"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "then"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.IfExpression"),-              Core.projectionFieldName = (Core.Name "then")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "else"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.IfExpression"),-              Core.projectionFieldName = (Core.Name "else")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the else field of hydra.haskell.syntax.IfExpression-ifExpressionWithElse :: Typed.TypedTerm Syntax.IfExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.IfExpression-ifExpressionWithElse original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.IfExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "condition"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.IfExpression"),-              Core.projectionFieldName = (Core.Name "condition")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "then"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.IfExpression"),-              Core.projectionFieldName = (Core.Name "then")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "else"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the then field of hydra.haskell.syntax.IfExpression-ifExpressionWithThen :: Typed.TypedTerm Syntax.IfExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.IfExpression-ifExpressionWithThen original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.IfExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "condition"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.IfExpression"),-              Core.projectionFieldName = (Core.Name "condition")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "then"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "else"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.IfExpression"),-              Core.projectionFieldName = (Core.Name "else")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.haskell.syntax.Import-import_ :: Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm (Maybe Syntax.ModuleName) -> Typed.TypedTerm (Maybe Syntax.ImportSpec) -> Typed.TypedTerm Syntax.Import-import_ qualified module_ as spec =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.Import"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "qualified"),-          Core.fieldTerm = (Typed.unTypedTerm qualified)},-        Core.Field {-          Core.fieldName = (Core.Name "module"),-          Core.fieldTerm = (Typed.unTypedTerm module_)},-        Core.Field {-          Core.fieldName = (Core.Name "as"),-          Core.fieldTerm = (Typed.unTypedTerm as)},-        Core.Field {-          Core.fieldName = (Core.Name "spec"),-          Core.fieldTerm = (Typed.unTypedTerm spec)}]}))---- | DSL accessor for the as field of hydra.haskell.syntax.Import-importAs :: Typed.TypedTerm Syntax.Import -> Typed.TypedTerm (Maybe Syntax.ModuleName)-importAs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Import"),-        Core.projectionFieldName = (Core.Name "as")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL injection for the all variant of hydra.haskell.syntax.ImportExportSubspec-importExportSubspecAll :: Typed.TypedTerm Syntax.ImportExportSubspec-importExportSubspecAll =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.ImportExportSubspec"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "all"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.haskell.syntax.ImportExportSubspec-importExportSubspecImportExportSubspec :: Typed.TypedName Syntax.ImportExportSubspec-importExportSubspecImportExportSubspec = Typed.TypedName (Core.Name "hydra.haskell.syntax.ImportExportSubspec")---- | DSL injection for the list variant of hydra.haskell.syntax.ImportExportSubspec-importExportSubspecList :: Typed.TypedTerm [Syntax.Name] -> Typed.TypedTerm Syntax.ImportExportSubspec-importExportSubspecList x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.ImportExportSubspec"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "list"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.haskell.syntax.Import-importImport :: Typed.TypedName Syntax.Import-importImport = Typed.TypedName (Core.Name "hydra.haskell.syntax.Import")---- | DSL name token for hydra.haskell.syntax.ImportModifier-importModifierImportModifier :: Typed.TypedName Syntax.ImportModifier-importModifierImportModifier = Typed.TypedName (Core.Name "hydra.haskell.syntax.ImportModifier")---- | DSL injection for the pattern variant of hydra.haskell.syntax.ImportModifier-importModifierPattern :: Typed.TypedTerm Syntax.ImportModifier-importModifierPattern =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.ImportModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "pattern"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the type variant of hydra.haskell.syntax.ImportModifier-importModifierType :: Typed.TypedTerm Syntax.ImportModifier-importModifierType =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.ImportModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "type"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL accessor for the module field of hydra.haskell.syntax.Import-importModule :: Typed.TypedTerm Syntax.Import -> Typed.TypedTerm Syntax.ModuleName-importModule x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Import"),-        Core.projectionFieldName = (Core.Name "module")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the qualified field of hydra.haskell.syntax.Import-importQualified :: Typed.TypedTerm Syntax.Import -> Typed.TypedTerm Bool-importQualified x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Import"),-        Core.projectionFieldName = (Core.Name "qualified")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the spec field of hydra.haskell.syntax.Import-importSpec :: Typed.TypedTerm Syntax.Import -> Typed.TypedTerm (Maybe Syntax.ImportSpec)-importSpec x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Import"),-        Core.projectionFieldName = (Core.Name "spec")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL injection for the hiding variant of hydra.haskell.syntax.ImportSpec-importSpecHiding :: Typed.TypedTerm [Syntax.NamedImportExport] -> Typed.TypedTerm Syntax.ImportSpec-importSpecHiding x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.ImportSpec"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "hiding"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.haskell.syntax.ImportSpec-importSpecImportSpec :: Typed.TypedName Syntax.ImportSpec-importSpecImportSpec = Typed.TypedName (Core.Name "hydra.haskell.syntax.ImportSpec")---- | DSL injection for the list variant of hydra.haskell.syntax.ImportSpec-importSpecList :: Typed.TypedTerm [Syntax.NamedImportExport] -> Typed.TypedTerm Syntax.ImportSpec-importSpecList x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.ImportSpec"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "list"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL updater for the as field of hydra.haskell.syntax.Import-importWithAs :: Typed.TypedTerm Syntax.Import -> Typed.TypedTerm (Maybe Syntax.ModuleName) -> Typed.TypedTerm Syntax.Import-importWithAs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.Import"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "qualified"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Import"),-              Core.projectionFieldName = (Core.Name "qualified")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "module"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Import"),-              Core.projectionFieldName = (Core.Name "module")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "as"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "spec"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Import"),-              Core.projectionFieldName = (Core.Name "spec")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the module field of hydra.haskell.syntax.Import-importWithModule :: Typed.TypedTerm Syntax.Import -> Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm Syntax.Import-importWithModule original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.Import"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "qualified"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Import"),-              Core.projectionFieldName = (Core.Name "qualified")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "module"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "as"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Import"),-              Core.projectionFieldName = (Core.Name "as")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "spec"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Import"),-              Core.projectionFieldName = (Core.Name "spec")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the qualified field of hydra.haskell.syntax.Import-importWithQualified :: Typed.TypedTerm Syntax.Import -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Import-importWithQualified original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.Import"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "qualified"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "module"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Import"),-              Core.projectionFieldName = (Core.Name "module")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "as"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Import"),-              Core.projectionFieldName = (Core.Name "as")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "spec"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Import"),-              Core.projectionFieldName = (Core.Name "spec")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the spec field of hydra.haskell.syntax.Import-importWithSpec :: Typed.TypedTerm Syntax.Import -> Typed.TypedTerm (Maybe Syntax.ImportSpec) -> Typed.TypedTerm Syntax.Import-importWithSpec original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.Import"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "qualified"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Import"),-              Core.projectionFieldName = (Core.Name "qualified")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "module"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Import"),-              Core.projectionFieldName = (Core.Name "module")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "as"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Import"),-              Core.projectionFieldName = (Core.Name "as")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "spec"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.haskell.syntax.InfixExpression-infixExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Operator -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.InfixExpression-infixExpression lhs operator rhs =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.InfixExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm lhs)},-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Typed.unTypedTerm operator)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))---- | DSL name token for hydra.haskell.syntax.InfixExpression-infixExpressionInfixExpression :: Typed.TypedName Syntax.InfixExpression-infixExpressionInfixExpression = Typed.TypedName (Core.Name "hydra.haskell.syntax.InfixExpression")---- | DSL accessor for the lhs field of hydra.haskell.syntax.InfixExpression-infixExpressionLhs :: Typed.TypedTerm Syntax.InfixExpression -> Typed.TypedTerm Syntax.Expression-infixExpressionLhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.InfixExpression"),-        Core.projectionFieldName = (Core.Name "lhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the operator field of hydra.haskell.syntax.InfixExpression-infixExpressionOperator :: Typed.TypedTerm Syntax.InfixExpression -> Typed.TypedTerm Syntax.Operator-infixExpressionOperator x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.InfixExpression"),-        Core.projectionFieldName = (Core.Name "operator")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the rhs field of hydra.haskell.syntax.InfixExpression-infixExpressionRhs :: Typed.TypedTerm Syntax.InfixExpression -> Typed.TypedTerm Syntax.Expression-infixExpressionRhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.InfixExpression"),-        Core.projectionFieldName = (Core.Name "rhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the lhs field of hydra.haskell.syntax.InfixExpression-infixExpressionWithLhs :: Typed.TypedTerm Syntax.InfixExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.InfixExpression-infixExpressionWithLhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.InfixExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.InfixExpression"),-              Core.projectionFieldName = (Core.Name "operator")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.InfixExpression"),-              Core.projectionFieldName = (Core.Name "rhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the operator field of hydra.haskell.syntax.InfixExpression-infixExpressionWithOperator :: Typed.TypedTerm Syntax.InfixExpression -> Typed.TypedTerm Syntax.Operator -> Typed.TypedTerm Syntax.InfixExpression-infixExpressionWithOperator original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.InfixExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.InfixExpression"),-              Core.projectionFieldName = (Core.Name "lhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.InfixExpression"),-              Core.projectionFieldName = (Core.Name "rhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the rhs field of hydra.haskell.syntax.InfixExpression-infixExpressionWithRhs :: Typed.TypedTerm Syntax.InfixExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.InfixExpression-infixExpressionWithRhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.InfixExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.InfixExpression"),-              Core.projectionFieldName = (Core.Name "lhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.InfixExpression"),-              Core.projectionFieldName = (Core.Name "operator")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.haskell.syntax.InfixType-infixType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Operator -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.InfixType-infixType lhs operator rhs =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.InfixType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm lhs)},-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Typed.unTypedTerm operator)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))---- | DSL name token for hydra.haskell.syntax.InfixType-infixTypeInfixType :: Typed.TypedName Syntax.InfixType-infixTypeInfixType = Typed.TypedName (Core.Name "hydra.haskell.syntax.InfixType")---- | DSL accessor for the lhs field of hydra.haskell.syntax.InfixType-infixTypeLhs :: Typed.TypedTerm Syntax.InfixType -> Typed.TypedTerm Syntax.Type-infixTypeLhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.InfixType"),-        Core.projectionFieldName = (Core.Name "lhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the operator field of hydra.haskell.syntax.InfixType-infixTypeOperator :: Typed.TypedTerm Syntax.InfixType -> Typed.TypedTerm Syntax.Operator-infixTypeOperator x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.InfixType"),-        Core.projectionFieldName = (Core.Name "operator")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the rhs field of hydra.haskell.syntax.InfixType-infixTypeRhs :: Typed.TypedTerm Syntax.InfixType -> Typed.TypedTerm Syntax.Type-infixTypeRhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.InfixType"),-        Core.projectionFieldName = (Core.Name "rhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the lhs field of hydra.haskell.syntax.InfixType-infixTypeWithLhs :: Typed.TypedTerm Syntax.InfixType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.InfixType-infixTypeWithLhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.InfixType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.InfixType"),-              Core.projectionFieldName = (Core.Name "operator")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.InfixType"),-              Core.projectionFieldName = (Core.Name "rhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the operator field of hydra.haskell.syntax.InfixType-infixTypeWithOperator :: Typed.TypedTerm Syntax.InfixType -> Typed.TypedTerm Syntax.Operator -> Typed.TypedTerm Syntax.InfixType-infixTypeWithOperator original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.InfixType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.InfixType"),-              Core.projectionFieldName = (Core.Name "lhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.InfixType"),-              Core.projectionFieldName = (Core.Name "rhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the rhs field of hydra.haskell.syntax.InfixType-infixTypeWithRhs :: Typed.TypedTerm Syntax.InfixType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.InfixType-infixTypeWithRhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.InfixType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.InfixType"),-              Core.projectionFieldName = (Core.Name "lhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.InfixType"),-              Core.projectionFieldName = (Core.Name "operator")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.haskell.syntax.LambdaExpression-lambdaExpression :: Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.LambdaExpression-lambdaExpression bindings inner =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.LambdaExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "bindings"),-          Core.fieldTerm = (Typed.unTypedTerm bindings)},-        Core.Field {-          Core.fieldName = (Core.Name "inner"),-          Core.fieldTerm = (Typed.unTypedTerm inner)}]}))---- | DSL accessor for the bindings field of hydra.haskell.syntax.LambdaExpression-lambdaExpressionBindings :: Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm [Syntax.Pattern]-lambdaExpressionBindings x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.LambdaExpression"),-        Core.projectionFieldName = (Core.Name "bindings")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the inner field of hydra.haskell.syntax.LambdaExpression-lambdaExpressionInner :: Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.Expression-lambdaExpressionInner x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.LambdaExpression"),-        Core.projectionFieldName = (Core.Name "inner")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.LambdaExpression-lambdaExpressionLambdaExpression :: Typed.TypedName Syntax.LambdaExpression-lambdaExpressionLambdaExpression = Typed.TypedName (Core.Name "hydra.haskell.syntax.LambdaExpression")---- | DSL updater for the bindings field of hydra.haskell.syntax.LambdaExpression-lambdaExpressionWithBindings :: Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.LambdaExpression-lambdaExpressionWithBindings original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.LambdaExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "bindings"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "inner"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.LambdaExpression"),-              Core.projectionFieldName = (Core.Name "inner")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the inner field of hydra.haskell.syntax.LambdaExpression-lambdaExpressionWithInner :: Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.LambdaExpression-lambdaExpressionWithInner original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.LambdaExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "bindings"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.LambdaExpression"),-              Core.projectionFieldName = (Core.Name "bindings")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inner"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.haskell.syntax.LetExpression-letExpression :: Typed.TypedTerm [Syntax.LocalBinding] -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.LetExpression-letExpression bindings inner =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.LetExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "bindings"),-          Core.fieldTerm = (Typed.unTypedTerm bindings)},-        Core.Field {-          Core.fieldName = (Core.Name "inner"),-          Core.fieldTerm = (Typed.unTypedTerm inner)}]}))---- | DSL accessor for the bindings field of hydra.haskell.syntax.LetExpression-letExpressionBindings :: Typed.TypedTerm Syntax.LetExpression -> Typed.TypedTerm [Syntax.LocalBinding]-letExpressionBindings x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.LetExpression"),-        Core.projectionFieldName = (Core.Name "bindings")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the inner field of hydra.haskell.syntax.LetExpression-letExpressionInner :: Typed.TypedTerm Syntax.LetExpression -> Typed.TypedTerm Syntax.Expression-letExpressionInner x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.LetExpression"),-        Core.projectionFieldName = (Core.Name "inner")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.LetExpression-letExpressionLetExpression :: Typed.TypedName Syntax.LetExpression-letExpressionLetExpression = Typed.TypedName (Core.Name "hydra.haskell.syntax.LetExpression")---- | DSL updater for the bindings field of hydra.haskell.syntax.LetExpression-letExpressionWithBindings :: Typed.TypedTerm Syntax.LetExpression -> Typed.TypedTerm [Syntax.LocalBinding] -> Typed.TypedTerm Syntax.LetExpression-letExpressionWithBindings original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.LetExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "bindings"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "inner"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.LetExpression"),-              Core.projectionFieldName = (Core.Name "inner")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the inner field of hydra.haskell.syntax.LetExpression-letExpressionWithInner :: Typed.TypedTerm Syntax.LetExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.LetExpression-letExpressionWithInner original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.LetExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "bindings"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.LetExpression"),-              Core.projectionFieldName = (Core.Name "bindings")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inner"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the char variant of hydra.haskell.syntax.Literal-literalChar :: Typed.TypedTerm Int -> Typed.TypedTerm Syntax.Literal-literalChar x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Literal"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "char"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the double variant of hydra.haskell.syntax.Literal-literalDouble :: Typed.TypedTerm Double -> Typed.TypedTerm Syntax.Literal-literalDouble x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Literal"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "double"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the float variant of hydra.haskell.syntax.Literal-literalFloat :: Typed.TypedTerm Float -> Typed.TypedTerm Syntax.Literal-literalFloat x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Literal"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "float"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the int variant of hydra.haskell.syntax.Literal-literalInt :: Typed.TypedTerm Int -> Typed.TypedTerm Syntax.Literal-literalInt x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Literal"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "int"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the integer variant of hydra.haskell.syntax.Literal-literalInteger :: Typed.TypedTerm Integer -> Typed.TypedTerm Syntax.Literal-literalInteger x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Literal"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "integer"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.haskell.syntax.Literal-literalLiteral :: Typed.TypedName Syntax.Literal-literalLiteral = Typed.TypedName (Core.Name "hydra.haskell.syntax.Literal")---- | DSL injection for the string variant of hydra.haskell.syntax.Literal-literalString :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Literal-literalString x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Literal"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "string"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.haskell.syntax.LocalBinding-localBindingLocalBinding :: Typed.TypedName Syntax.LocalBinding-localBindingLocalBinding = Typed.TypedName (Core.Name "hydra.haskell.syntax.LocalBinding")---- | DSL injection for the signature variant of hydra.haskell.syntax.LocalBinding-localBindingSignature :: Typed.TypedTerm Syntax.TypeSignature -> Typed.TypedTerm Syntax.LocalBinding-localBindingSignature x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.LocalBinding"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "signature"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the value variant of hydra.haskell.syntax.LocalBinding-localBindingValue :: Typed.TypedTerm Syntax.ValueBinding -> Typed.TypedTerm Syntax.LocalBinding-localBindingValue x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.LocalBinding"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "value"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for the hydra.haskell.syntax.LocalBindings wrapper-localBindings :: Typed.TypedTerm [Syntax.LocalBinding] -> Typed.TypedTerm Syntax.LocalBindings-localBindings x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.haskell.syntax.LocalBindings"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.LocalBindings-localBindingsLocalBindings :: Typed.TypedName Syntax.LocalBindings-localBindingsLocalBindings = Typed.TypedName (Core.Name "hydra.haskell.syntax.LocalBindings")---- | DSL constructor for hydra.haskell.syntax.Module-module_ :: Typed.TypedTerm (Maybe Syntax.ModuleHead) -> Typed.TypedTerm [Syntax.Import] -> Typed.TypedTerm [Syntax.Declaration] -> Typed.TypedTerm Syntax.Module-module_ head imports declarations =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.Module"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "head"),-          Core.fieldTerm = (Typed.unTypedTerm head)},-        Core.Field {-          Core.fieldName = (Core.Name "imports"),-          Core.fieldTerm = (Typed.unTypedTerm imports)},-        Core.Field {-          Core.fieldName = (Core.Name "declarations"),-          Core.fieldTerm = (Typed.unTypedTerm declarations)}]}))---- | DSL accessor for the declarations field of hydra.haskell.syntax.Module-moduleDeclarations :: Typed.TypedTerm Syntax.Module -> Typed.TypedTerm [Syntax.Declaration]-moduleDeclarations x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Module"),-        Core.projectionFieldName = (Core.Name "declarations")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the head field of hydra.haskell.syntax.Module-moduleHead :: Typed.TypedTerm Syntax.Module -> Typed.TypedTerm (Maybe Syntax.ModuleHead)-moduleHead x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Module"),-        Core.projectionFieldName = (Core.Name "head")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL constructor for hydra.haskell.syntax.ModuleHead-moduleHead2 :: Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm [Syntax.Export] -> Typed.TypedTerm Syntax.ModuleHead-moduleHead2 comments name exports =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.ModuleHead"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm comments)},-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "exports"),-          Core.fieldTerm = (Typed.unTypedTerm exports)}]}))---- | DSL accessor for the comments field of hydra.haskell.syntax.ModuleHead-moduleHeadComments :: Typed.TypedTerm Syntax.ModuleHead -> Typed.TypedTerm (Maybe String)-moduleHeadComments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ModuleHead"),-        Core.projectionFieldName = (Core.Name "comments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the exports field of hydra.haskell.syntax.ModuleHead-moduleHeadExports :: Typed.TypedTerm Syntax.ModuleHead -> Typed.TypedTerm [Syntax.Export]-moduleHeadExports x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ModuleHead"),-        Core.projectionFieldName = (Core.Name "exports")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.ModuleHead-moduleHeadModuleHead :: Typed.TypedName Syntax.ModuleHead-moduleHeadModuleHead = Typed.TypedName (Core.Name "hydra.haskell.syntax.ModuleHead")---- | DSL accessor for the name field of hydra.haskell.syntax.ModuleHead-moduleHeadName :: Typed.TypedTerm Syntax.ModuleHead -> Typed.TypedTerm Syntax.ModuleName-moduleHeadName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ModuleHead"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the comments field of hydra.haskell.syntax.ModuleHead-moduleHeadWithComments :: Typed.TypedTerm Syntax.ModuleHead -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.ModuleHead-moduleHeadWithComments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.ModuleHead"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ModuleHead"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "exports"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ModuleHead"),-              Core.projectionFieldName = (Core.Name "exports")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the exports field of hydra.haskell.syntax.ModuleHead-moduleHeadWithExports :: Typed.TypedTerm Syntax.ModuleHead -> Typed.TypedTerm [Syntax.Export] -> Typed.TypedTerm Syntax.ModuleHead-moduleHeadWithExports original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.ModuleHead"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ModuleHead"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ModuleHead"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "exports"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the name field of hydra.haskell.syntax.ModuleHead-moduleHeadWithName :: Typed.TypedTerm Syntax.ModuleHead -> Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm Syntax.ModuleHead-moduleHeadWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.ModuleHead"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ModuleHead"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "exports"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.ModuleHead"),-              Core.projectionFieldName = (Core.Name "exports")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL accessor for the imports field of hydra.haskell.syntax.Module-moduleImports :: Typed.TypedTerm Syntax.Module -> Typed.TypedTerm [Syntax.Import]-moduleImports x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Module"),-        Core.projectionFieldName = (Core.Name "imports")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.Module-moduleModule :: Typed.TypedName Syntax.Module-moduleModule = Typed.TypedName (Core.Name "hydra.haskell.syntax.Module")---- | DSL constructor for the hydra.haskell.syntax.ModuleName wrapper-moduleName :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.ModuleName-moduleName x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.haskell.syntax.ModuleName"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.ModuleName-moduleNameModuleName :: Typed.TypedName Syntax.ModuleName-moduleNameModuleName = Typed.TypedName (Core.Name "hydra.haskell.syntax.ModuleName")---- | DSL updater for the declarations field of hydra.haskell.syntax.Module-moduleWithDeclarations :: Typed.TypedTerm Syntax.Module -> Typed.TypedTerm [Syntax.Declaration] -> Typed.TypedTerm Syntax.Module-moduleWithDeclarations original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.Module"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "head"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Module"),-              Core.projectionFieldName = (Core.Name "head")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "imports"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Module"),-              Core.projectionFieldName = (Core.Name "imports")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "declarations"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the head field of hydra.haskell.syntax.Module-moduleWithHead :: Typed.TypedTerm Syntax.Module -> Typed.TypedTerm (Maybe Syntax.ModuleHead) -> Typed.TypedTerm Syntax.Module-moduleWithHead original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.Module"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "head"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "imports"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Module"),-              Core.projectionFieldName = (Core.Name "imports")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "declarations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Module"),-              Core.projectionFieldName = (Core.Name "declarations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the imports field of hydra.haskell.syntax.Module-moduleWithImports :: Typed.TypedTerm Syntax.Module -> Typed.TypedTerm [Syntax.Import] -> Typed.TypedTerm Syntax.Module-moduleWithImports original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.Module"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "head"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Module"),-              Core.projectionFieldName = (Core.Name "head")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "imports"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "declarations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.Module"),-              Core.projectionFieldName = (Core.Name "declarations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the implicit variant of hydra.haskell.syntax.Name-nameImplicit :: Typed.TypedTerm Syntax.QualifiedName -> Typed.TypedTerm Syntax.Name-nameImplicit x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Name"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "implicit"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.haskell.syntax.Name-nameName :: Typed.TypedName Syntax.Name-nameName = Typed.TypedName (Core.Name "hydra.haskell.syntax.Name")---- | DSL injection for the normal variant of hydra.haskell.syntax.Name-nameNormal :: Typed.TypedTerm Syntax.QualifiedName -> Typed.TypedTerm Syntax.Name-nameNormal x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Name"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "normal"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for the hydra.haskell.syntax.NamePart wrapper-namePart :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.NamePart-namePart x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.haskell.syntax.NamePart"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.NamePart-namePartNamePart :: Typed.TypedName Syntax.NamePart-namePartNamePart = Typed.TypedName (Core.Name "hydra.haskell.syntax.NamePart")---- | DSL constructor for hydra.haskell.syntax.NamedImportExport-namedImportExport :: Typed.TypedTerm (Maybe Syntax.ImportModifier) -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.ImportExportSubspec) -> Typed.TypedTerm Syntax.NamedImportExport-namedImportExport modifier name subspec =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.NamedImportExport"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifier"),-          Core.fieldTerm = (Typed.unTypedTerm modifier)},-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "subspec"),-          Core.fieldTerm = (Typed.unTypedTerm subspec)}]}))---- | DSL accessor for the modifier field of hydra.haskell.syntax.NamedImportExport-namedImportExportModifier :: Typed.TypedTerm Syntax.NamedImportExport -> Typed.TypedTerm (Maybe Syntax.ImportModifier)-namedImportExportModifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.NamedImportExport"),-        Core.projectionFieldName = (Core.Name "modifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the name field of hydra.haskell.syntax.NamedImportExport-namedImportExportName :: Typed.TypedTerm Syntax.NamedImportExport -> Typed.TypedTerm Syntax.Name-namedImportExportName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.NamedImportExport"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.NamedImportExport-namedImportExportNamedImportExport :: Typed.TypedName Syntax.NamedImportExport-namedImportExportNamedImportExport = Typed.TypedName (Core.Name "hydra.haskell.syntax.NamedImportExport")---- | DSL accessor for the subspec field of hydra.haskell.syntax.NamedImportExport-namedImportExportSubspec :: Typed.TypedTerm Syntax.NamedImportExport -> Typed.TypedTerm (Maybe Syntax.ImportExportSubspec)-namedImportExportSubspec x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.NamedImportExport"),-        Core.projectionFieldName = (Core.Name "subspec")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the modifier field of hydra.haskell.syntax.NamedImportExport-namedImportExportWithModifier :: Typed.TypedTerm Syntax.NamedImportExport -> Typed.TypedTerm (Maybe Syntax.ImportModifier) -> Typed.TypedTerm Syntax.NamedImportExport-namedImportExportWithModifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.NamedImportExport"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.NamedImportExport"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "subspec"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.NamedImportExport"),-              Core.projectionFieldName = (Core.Name "subspec")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the name field of hydra.haskell.syntax.NamedImportExport-namedImportExportWithName :: Typed.TypedTerm Syntax.NamedImportExport -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.NamedImportExport-namedImportExportWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.NamedImportExport"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.NamedImportExport"),-              Core.projectionFieldName = (Core.Name "modifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "subspec"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.NamedImportExport"),-              Core.projectionFieldName = (Core.Name "subspec")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the subspec field of hydra.haskell.syntax.NamedImportExport-namedImportExportWithSubspec :: Typed.TypedTerm Syntax.NamedImportExport -> Typed.TypedTerm (Maybe Syntax.ImportExportSubspec) -> Typed.TypedTerm Syntax.NamedImportExport-namedImportExportWithSubspec original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.NamedImportExport"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.NamedImportExport"),-              Core.projectionFieldName = (Core.Name "modifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.NamedImportExport"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "subspec"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the backtick variant of hydra.haskell.syntax.Operator-operatorBacktick :: Typed.TypedTerm Syntax.QualifiedName -> Typed.TypedTerm Syntax.Operator-operatorBacktick x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Operator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "backtick"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the normal variant of hydra.haskell.syntax.Operator-operatorNormal :: Typed.TypedTerm Syntax.QualifiedName -> Typed.TypedTerm Syntax.Operator-operatorNormal x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Operator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "normal"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.haskell.syntax.Operator-operatorOperator :: Typed.TypedName Syntax.Operator-operatorOperator = Typed.TypedName (Core.Name "hydra.haskell.syntax.Operator")---- | DSL injection for the application variant of hydra.haskell.syntax.Pattern-patternApplication :: Typed.TypedTerm Syntax.ApplicationPattern -> Typed.TypedTerm Syntax.Pattern-patternApplication x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Pattern"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "application"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the as variant of hydra.haskell.syntax.Pattern-patternAs :: Typed.TypedTerm Syntax.AsPattern -> Typed.TypedTerm Syntax.Pattern-patternAs x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Pattern"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "as"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.haskell.syntax.PatternField-patternField :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.PatternField-patternField name pattern =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.PatternField"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "pattern"),-          Core.fieldTerm = (Typed.unTypedTerm pattern)}]}))---- | DSL accessor for the name field of hydra.haskell.syntax.PatternField-patternFieldName :: Typed.TypedTerm Syntax.PatternField -> Typed.TypedTerm Syntax.Name-patternFieldName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.PatternField"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the pattern field of hydra.haskell.syntax.PatternField-patternFieldPattern :: Typed.TypedTerm Syntax.PatternField -> Typed.TypedTerm Syntax.Pattern-patternFieldPattern x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.PatternField"),-        Core.projectionFieldName = (Core.Name "pattern")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.PatternField-patternFieldPatternField :: Typed.TypedName Syntax.PatternField-patternFieldPatternField = Typed.TypedName (Core.Name "hydra.haskell.syntax.PatternField")---- | DSL updater for the name field of hydra.haskell.syntax.PatternField-patternFieldWithName :: Typed.TypedTerm Syntax.PatternField -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.PatternField-patternFieldWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.PatternField"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "pattern"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.PatternField"),-              Core.projectionFieldName = (Core.Name "pattern")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the pattern field of hydra.haskell.syntax.PatternField-patternFieldWithPattern :: Typed.TypedTerm Syntax.PatternField -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.PatternField-patternFieldWithPattern original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.PatternField"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.PatternField"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "pattern"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the list variant of hydra.haskell.syntax.Pattern-patternList :: Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.Pattern-patternList x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Pattern"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "list"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the literal variant of hydra.haskell.syntax.Pattern-patternLiteral :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Syntax.Pattern-patternLiteral x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Pattern"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "literal"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the name variant of hydra.haskell.syntax.Pattern-patternName :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Pattern-patternName x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Pattern"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "name"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.haskell.syntax.Pattern-patternPattern :: Typed.TypedName Syntax.Pattern-patternPattern = Typed.TypedName (Core.Name "hydra.haskell.syntax.Pattern")---- | DSL injection for the record variant of hydra.haskell.syntax.Pattern-patternRecord :: Typed.TypedTerm Syntax.RecordPattern -> Typed.TypedTerm Syntax.Pattern-patternRecord x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Pattern"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "record"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the tuple variant of hydra.haskell.syntax.Pattern-patternTuple :: Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.Pattern-patternTuple x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Pattern"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "tuple"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the typed variant of hydra.haskell.syntax.Pattern-patternTyped :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.Pattern-patternTyped x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Pattern"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "typed"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the wildcard variant of hydra.haskell.syntax.Pattern-patternWildcard :: Typed.TypedTerm Syntax.Pattern-patternWildcard =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Pattern"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "wildcard"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL constructor for hydra.haskell.syntax.PositionalConstructor-positionalConstructor :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.PositionalConstructor-positionalConstructor name fields comments =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.PositionalConstructor"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "fields"),-          Core.fieldTerm = (Typed.unTypedTerm fields)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm comments)}]}))---- | DSL accessor for the comments field of hydra.haskell.syntax.PositionalConstructor-positionalConstructorComments :: Typed.TypedTerm Syntax.PositionalConstructor -> Typed.TypedTerm (Maybe String)-positionalConstructorComments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.PositionalConstructor"),-        Core.projectionFieldName = (Core.Name "comments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the fields field of hydra.haskell.syntax.PositionalConstructor-positionalConstructorFields :: Typed.TypedTerm Syntax.PositionalConstructor -> Typed.TypedTerm [Syntax.Type]-positionalConstructorFields x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.PositionalConstructor"),-        Core.projectionFieldName = (Core.Name "fields")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the name field of hydra.haskell.syntax.PositionalConstructor-positionalConstructorName :: Typed.TypedTerm Syntax.PositionalConstructor -> Typed.TypedTerm Syntax.Name-positionalConstructorName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.PositionalConstructor"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.PositionalConstructor-positionalConstructorPositionalConstructor :: Typed.TypedName Syntax.PositionalConstructor-positionalConstructorPositionalConstructor = Typed.TypedName (Core.Name "hydra.haskell.syntax.PositionalConstructor")---- | DSL updater for the comments field of hydra.haskell.syntax.PositionalConstructor-positionalConstructorWithComments :: Typed.TypedTerm Syntax.PositionalConstructor -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.PositionalConstructor-positionalConstructorWithComments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.PositionalConstructor"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.PositionalConstructor"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "fields"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.PositionalConstructor"),-              Core.projectionFieldName = (Core.Name "fields")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the fields field of hydra.haskell.syntax.PositionalConstructor-positionalConstructorWithFields :: Typed.TypedTerm Syntax.PositionalConstructor -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.PositionalConstructor-positionalConstructorWithFields original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.PositionalConstructor"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.PositionalConstructor"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "fields"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.PositionalConstructor"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the name field of hydra.haskell.syntax.PositionalConstructor-positionalConstructorWithName :: Typed.TypedTerm Syntax.PositionalConstructor -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.PositionalConstructor-positionalConstructorWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.PositionalConstructor"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "fields"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.PositionalConstructor"),-              Core.projectionFieldName = (Core.Name "fields")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.PositionalConstructor"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.haskell.syntax.QualifiedName-qualifiedName :: Typed.TypedTerm [Syntax.NamePart] -> Typed.TypedTerm Syntax.NamePart -> Typed.TypedTerm Syntax.QualifiedName-qualifiedName qualifiers unqualified =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.QualifiedName"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "qualifiers"),-          Core.fieldTerm = (Typed.unTypedTerm qualifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "unqualified"),-          Core.fieldTerm = (Typed.unTypedTerm unqualified)}]}))---- | DSL name token for hydra.haskell.syntax.QualifiedName-qualifiedNameQualifiedName :: Typed.TypedName Syntax.QualifiedName-qualifiedNameQualifiedName = Typed.TypedName (Core.Name "hydra.haskell.syntax.QualifiedName")---- | DSL accessor for the qualifiers field of hydra.haskell.syntax.QualifiedName-qualifiedNameQualifiers :: Typed.TypedTerm Syntax.QualifiedName -> Typed.TypedTerm [Syntax.NamePart]-qualifiedNameQualifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.QualifiedName"),-        Core.projectionFieldName = (Core.Name "qualifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the unqualified field of hydra.haskell.syntax.QualifiedName-qualifiedNameUnqualified :: Typed.TypedTerm Syntax.QualifiedName -> Typed.TypedTerm Syntax.NamePart-qualifiedNameUnqualified x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.QualifiedName"),-        Core.projectionFieldName = (Core.Name "unqualified")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the qualifiers field of hydra.haskell.syntax.QualifiedName-qualifiedNameWithQualifiers :: Typed.TypedTerm Syntax.QualifiedName -> Typed.TypedTerm [Syntax.NamePart] -> Typed.TypedTerm Syntax.QualifiedName-qualifiedNameWithQualifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.QualifiedName"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "qualifiers"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "unqualified"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.QualifiedName"),-              Core.projectionFieldName = (Core.Name "unqualified")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the unqualified field of hydra.haskell.syntax.QualifiedName-qualifiedNameWithUnqualified :: Typed.TypedTerm Syntax.QualifiedName -> Typed.TypedTerm Syntax.NamePart -> Typed.TypedTerm Syntax.QualifiedName-qualifiedNameWithUnqualified original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.QualifiedName"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "qualifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.QualifiedName"),-              Core.projectionFieldName = (Core.Name "qualifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "unqualified"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.haskell.syntax.RecordConstructor-recordConstructor :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.Field] -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.RecordConstructor-recordConstructor name fields comments =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.RecordConstructor"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "fields"),-          Core.fieldTerm = (Typed.unTypedTerm fields)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm comments)}]}))---- | DSL accessor for the comments field of hydra.haskell.syntax.RecordConstructor-recordConstructorComments :: Typed.TypedTerm Syntax.RecordConstructor -> Typed.TypedTerm (Maybe String)-recordConstructorComments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.RecordConstructor"),-        Core.projectionFieldName = (Core.Name "comments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the fields field of hydra.haskell.syntax.RecordConstructor-recordConstructorFields :: Typed.TypedTerm Syntax.RecordConstructor -> Typed.TypedTerm [Syntax.Field]-recordConstructorFields x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.RecordConstructor"),-        Core.projectionFieldName = (Core.Name "fields")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the name field of hydra.haskell.syntax.RecordConstructor-recordConstructorName :: Typed.TypedTerm Syntax.RecordConstructor -> Typed.TypedTerm Syntax.Name-recordConstructorName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.RecordConstructor"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.RecordConstructor-recordConstructorRecordConstructor :: Typed.TypedName Syntax.RecordConstructor-recordConstructorRecordConstructor = Typed.TypedName (Core.Name "hydra.haskell.syntax.RecordConstructor")---- | DSL updater for the comments field of hydra.haskell.syntax.RecordConstructor-recordConstructorWithComments :: Typed.TypedTerm Syntax.RecordConstructor -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.RecordConstructor-recordConstructorWithComments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.RecordConstructor"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.RecordConstructor"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "fields"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.RecordConstructor"),-              Core.projectionFieldName = (Core.Name "fields")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the fields field of hydra.haskell.syntax.RecordConstructor-recordConstructorWithFields :: Typed.TypedTerm Syntax.RecordConstructor -> Typed.TypedTerm [Syntax.Field] -> Typed.TypedTerm Syntax.RecordConstructor-recordConstructorWithFields original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.RecordConstructor"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.RecordConstructor"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "fields"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.RecordConstructor"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the name field of hydra.haskell.syntax.RecordConstructor-recordConstructorWithName :: Typed.TypedTerm Syntax.RecordConstructor -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.RecordConstructor-recordConstructorWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.RecordConstructor"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "fields"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.RecordConstructor"),-              Core.projectionFieldName = (Core.Name "fields")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.RecordConstructor"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.haskell.syntax.RecordExpression-recordExpression :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.FieldUpdate] -> Typed.TypedTerm Syntax.RecordExpression-recordExpression name fields =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.RecordExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "fields"),-          Core.fieldTerm = (Typed.unTypedTerm fields)}]}))---- | DSL accessor for the fields field of hydra.haskell.syntax.RecordExpression-recordExpressionFields :: Typed.TypedTerm Syntax.RecordExpression -> Typed.TypedTerm [Syntax.FieldUpdate]-recordExpressionFields x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.RecordExpression"),-        Core.projectionFieldName = (Core.Name "fields")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the name field of hydra.haskell.syntax.RecordExpression-recordExpressionName :: Typed.TypedTerm Syntax.RecordExpression -> Typed.TypedTerm Syntax.Name-recordExpressionName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.RecordExpression"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.RecordExpression-recordExpressionRecordExpression :: Typed.TypedName Syntax.RecordExpression-recordExpressionRecordExpression = Typed.TypedName (Core.Name "hydra.haskell.syntax.RecordExpression")---- | DSL updater for the fields field of hydra.haskell.syntax.RecordExpression-recordExpressionWithFields :: Typed.TypedTerm Syntax.RecordExpression -> Typed.TypedTerm [Syntax.FieldUpdate] -> Typed.TypedTerm Syntax.RecordExpression-recordExpressionWithFields original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.RecordExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.RecordExpression"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "fields"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the name field of hydra.haskell.syntax.RecordExpression-recordExpressionWithName :: Typed.TypedTerm Syntax.RecordExpression -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.RecordExpression-recordExpressionWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.RecordExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "fields"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.RecordExpression"),-              Core.projectionFieldName = (Core.Name "fields")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.haskell.syntax.RecordPattern-recordPattern :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.PatternField] -> Typed.TypedTerm Syntax.RecordPattern-recordPattern name fields =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.RecordPattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "fields"),-          Core.fieldTerm = (Typed.unTypedTerm fields)}]}))---- | DSL accessor for the fields field of hydra.haskell.syntax.RecordPattern-recordPatternFields :: Typed.TypedTerm Syntax.RecordPattern -> Typed.TypedTerm [Syntax.PatternField]-recordPatternFields x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.RecordPattern"),-        Core.projectionFieldName = (Core.Name "fields")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the name field of hydra.haskell.syntax.RecordPattern-recordPatternName :: Typed.TypedTerm Syntax.RecordPattern -> Typed.TypedTerm Syntax.Name-recordPatternName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.RecordPattern"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.RecordPattern-recordPatternRecordPattern :: Typed.TypedName Syntax.RecordPattern-recordPatternRecordPattern = Typed.TypedName (Core.Name "hydra.haskell.syntax.RecordPattern")---- | DSL updater for the fields field of hydra.haskell.syntax.RecordPattern-recordPatternWithFields :: Typed.TypedTerm Syntax.RecordPattern -> Typed.TypedTerm [Syntax.PatternField] -> Typed.TypedTerm Syntax.RecordPattern-recordPatternWithFields original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.RecordPattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.RecordPattern"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "fields"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the name field of hydra.haskell.syntax.RecordPattern-recordPatternWithName :: Typed.TypedTerm Syntax.RecordPattern -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.RecordPattern-recordPatternWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.RecordPattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "fields"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.RecordPattern"),-              Core.projectionFieldName = (Core.Name "fields")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.haskell.syntax.RecordUpdateExpression-recordUpdateExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm [Syntax.FieldUpdate] -> Typed.TypedTerm Syntax.RecordUpdateExpression-recordUpdateExpression inner fields =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.RecordUpdateExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "inner"),-          Core.fieldTerm = (Typed.unTypedTerm inner)},-        Core.Field {-          Core.fieldName = (Core.Name "fields"),-          Core.fieldTerm = (Typed.unTypedTerm fields)}]}))---- | DSL accessor for the fields field of hydra.haskell.syntax.RecordUpdateExpression-recordUpdateExpressionFields :: Typed.TypedTerm Syntax.RecordUpdateExpression -> Typed.TypedTerm [Syntax.FieldUpdate]-recordUpdateExpressionFields x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.RecordUpdateExpression"),-        Core.projectionFieldName = (Core.Name "fields")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the inner field of hydra.haskell.syntax.RecordUpdateExpression-recordUpdateExpressionInner :: Typed.TypedTerm Syntax.RecordUpdateExpression -> Typed.TypedTerm Syntax.Expression-recordUpdateExpressionInner x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.RecordUpdateExpression"),-        Core.projectionFieldName = (Core.Name "inner")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.RecordUpdateExpression-recordUpdateExpressionRecordUpdateExpression :: Typed.TypedName Syntax.RecordUpdateExpression-recordUpdateExpressionRecordUpdateExpression = Typed.TypedName (Core.Name "hydra.haskell.syntax.RecordUpdateExpression")---- | DSL updater for the fields field of hydra.haskell.syntax.RecordUpdateExpression-recordUpdateExpressionWithFields :: Typed.TypedTerm Syntax.RecordUpdateExpression -> Typed.TypedTerm [Syntax.FieldUpdate] -> Typed.TypedTerm Syntax.RecordUpdateExpression-recordUpdateExpressionWithFields original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.RecordUpdateExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "inner"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.RecordUpdateExpression"),-              Core.projectionFieldName = (Core.Name "inner")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "fields"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the inner field of hydra.haskell.syntax.RecordUpdateExpression-recordUpdateExpressionWithInner :: Typed.TypedTerm Syntax.RecordUpdateExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.RecordUpdateExpression-recordUpdateExpressionWithInner original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.RecordUpdateExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "inner"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "fields"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.RecordUpdateExpression"),-              Core.projectionFieldName = (Core.Name "fields")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.haskell.syntax.RightHandSide wrapper-rightHandSide :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.RightHandSide-rightHandSide x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.haskell.syntax.RightHandSide"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.RightHandSide-rightHandSideRightHandSide :: Typed.TypedName Syntax.RightHandSide-rightHandSideRightHandSide = Typed.TypedName (Core.Name "hydra.haskell.syntax.RightHandSide")---- | DSL constructor for hydra.haskell.syntax.SectionExpression-sectionExpression :: Typed.TypedTerm Syntax.Operator -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SectionExpression-sectionExpression operator expression =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.SectionExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Typed.unTypedTerm operator)},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm expression)}]}))---- | DSL accessor for the expression field of hydra.haskell.syntax.SectionExpression-sectionExpressionExpression :: Typed.TypedTerm Syntax.SectionExpression -> Typed.TypedTerm Syntax.Expression-sectionExpressionExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.SectionExpression"),-        Core.projectionFieldName = (Core.Name "expression")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the operator field of hydra.haskell.syntax.SectionExpression-sectionExpressionOperator :: Typed.TypedTerm Syntax.SectionExpression -> Typed.TypedTerm Syntax.Operator-sectionExpressionOperator x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.SectionExpression"),-        Core.projectionFieldName = (Core.Name "operator")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.SectionExpression-sectionExpressionSectionExpression :: Typed.TypedName Syntax.SectionExpression-sectionExpressionSectionExpression = Typed.TypedName (Core.Name "hydra.haskell.syntax.SectionExpression")---- | DSL updater for the expression field of hydra.haskell.syntax.SectionExpression-sectionExpressionWithExpression :: Typed.TypedTerm Syntax.SectionExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SectionExpression-sectionExpressionWithExpression original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.SectionExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.SectionExpression"),-              Core.projectionFieldName = (Core.Name "operator")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the operator field of hydra.haskell.syntax.SectionExpression-sectionExpressionWithOperator :: Typed.TypedTerm Syntax.SectionExpression -> Typed.TypedTerm Syntax.Operator -> Typed.TypedTerm Syntax.SectionExpression-sectionExpressionWithOperator original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.SectionExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.SectionExpression"),-              Core.projectionFieldName = (Core.Name "expression")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.haskell.syntax.SimpleValueBinding-simpleValueBinding :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.RightHandSide -> Typed.TypedTerm (Maybe Syntax.LocalBindings) -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.SimpleValueBinding-simpleValueBinding pattern rhs localBindings comments =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.SimpleValueBinding"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "pattern"),-          Core.fieldTerm = (Typed.unTypedTerm pattern)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm rhs)},-        Core.Field {-          Core.fieldName = (Core.Name "localBindings"),-          Core.fieldTerm = (Typed.unTypedTerm localBindings)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm comments)}]}))---- | DSL accessor for the comments field of hydra.haskell.syntax.SimpleValueBinding-simpleValueBindingComments :: Typed.TypedTerm Syntax.SimpleValueBinding -> Typed.TypedTerm (Maybe String)-simpleValueBindingComments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.SimpleValueBinding"),-        Core.projectionFieldName = (Core.Name "comments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the localBindings field of hydra.haskell.syntax.SimpleValueBinding-simpleValueBindingLocalBindings :: Typed.TypedTerm Syntax.SimpleValueBinding -> Typed.TypedTerm (Maybe Syntax.LocalBindings)-simpleValueBindingLocalBindings x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.SimpleValueBinding"),-        Core.projectionFieldName = (Core.Name "localBindings")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the pattern field of hydra.haskell.syntax.SimpleValueBinding-simpleValueBindingPattern :: Typed.TypedTerm Syntax.SimpleValueBinding -> Typed.TypedTerm Syntax.Pattern-simpleValueBindingPattern x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.SimpleValueBinding"),-        Core.projectionFieldName = (Core.Name "pattern")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the rhs field of hydra.haskell.syntax.SimpleValueBinding-simpleValueBindingRhs :: Typed.TypedTerm Syntax.SimpleValueBinding -> Typed.TypedTerm Syntax.RightHandSide-simpleValueBindingRhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.SimpleValueBinding"),-        Core.projectionFieldName = (Core.Name "rhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.SimpleValueBinding-simpleValueBindingSimpleValueBinding :: Typed.TypedName Syntax.SimpleValueBinding-simpleValueBindingSimpleValueBinding = Typed.TypedName (Core.Name "hydra.haskell.syntax.SimpleValueBinding")---- | DSL updater for the comments field of hydra.haskell.syntax.SimpleValueBinding-simpleValueBindingWithComments :: Typed.TypedTerm Syntax.SimpleValueBinding -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.SimpleValueBinding-simpleValueBindingWithComments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.SimpleValueBinding"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "pattern"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.SimpleValueBinding"),-              Core.projectionFieldName = (Core.Name "pattern")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.SimpleValueBinding"),-              Core.projectionFieldName = (Core.Name "rhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "localBindings"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.SimpleValueBinding"),-              Core.projectionFieldName = (Core.Name "localBindings")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the localBindings field of hydra.haskell.syntax.SimpleValueBinding-simpleValueBindingWithLocalBindings :: Typed.TypedTerm Syntax.SimpleValueBinding -> Typed.TypedTerm (Maybe Syntax.LocalBindings) -> Typed.TypedTerm Syntax.SimpleValueBinding-simpleValueBindingWithLocalBindings original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.SimpleValueBinding"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "pattern"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.SimpleValueBinding"),-              Core.projectionFieldName = (Core.Name "pattern")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.SimpleValueBinding"),-              Core.projectionFieldName = (Core.Name "rhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "localBindings"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.SimpleValueBinding"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the pattern field of hydra.haskell.syntax.SimpleValueBinding-simpleValueBindingWithPattern :: Typed.TypedTerm Syntax.SimpleValueBinding -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.SimpleValueBinding-simpleValueBindingWithPattern original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.SimpleValueBinding"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "pattern"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.SimpleValueBinding"),-              Core.projectionFieldName = (Core.Name "rhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "localBindings"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.SimpleValueBinding"),-              Core.projectionFieldName = (Core.Name "localBindings")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.SimpleValueBinding"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the rhs field of hydra.haskell.syntax.SimpleValueBinding-simpleValueBindingWithRhs :: Typed.TypedTerm Syntax.SimpleValueBinding -> Typed.TypedTerm Syntax.RightHandSide -> Typed.TypedTerm Syntax.SimpleValueBinding-simpleValueBindingWithRhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.SimpleValueBinding"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "pattern"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.SimpleValueBinding"),-              Core.projectionFieldName = (Core.Name "pattern")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "localBindings"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.SimpleValueBinding"),-              Core.projectionFieldName = (Core.Name "localBindings")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.SimpleValueBinding"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.haskell.syntax.Statement wrapper-statement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement-statement x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.haskell.syntax.Statement"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.Statement-statementStatement :: Typed.TypedName Syntax.Statement-statementStatement = Typed.TypedName (Core.Name "hydra.haskell.syntax.Statement")---- | DSL injection for the application variant of hydra.haskell.syntax.Type-typeApplication :: Typed.TypedTerm Syntax.ApplicationType -> Typed.TypedTerm Syntax.Type-typeApplication x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Type"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "application"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the ctx variant of hydra.haskell.syntax.Type-typeCtx :: Typed.TypedTerm Syntax.ConstrainedType -> Typed.TypedTerm Syntax.Type-typeCtx x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Type"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "ctx"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the function variant of hydra.haskell.syntax.Type-typeFunction :: Typed.TypedTerm Syntax.FunctionType -> Typed.TypedTerm Syntax.Type-typeFunction x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Type"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "function"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the infix variant of hydra.haskell.syntax.Type-typeInfix :: Typed.TypedTerm Syntax.InfixType -> Typed.TypedTerm Syntax.Type-typeInfix x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Type"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "infix"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the list variant of hydra.haskell.syntax.Type-typeList :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Type-typeList x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Type"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "list"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.haskell.syntax.TypeSignature-typeSignature :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypeSignature-typeSignature name type_ =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.TypeSignature"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)}]}))---- | DSL accessor for the name field of hydra.haskell.syntax.TypeSignature-typeSignatureName :: Typed.TypedTerm Syntax.TypeSignature -> Typed.TypedTerm Syntax.Name-typeSignatureName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypeSignature"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.haskell.syntax.TypeSignature-typeSignatureType :: Typed.TypedTerm Syntax.TypeSignature -> Typed.TypedTerm Syntax.Type-typeSignatureType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypeSignature"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.TypeSignature-typeSignatureTypeSignature :: Typed.TypedName Syntax.TypeSignature-typeSignatureTypeSignature = Typed.TypedName (Core.Name "hydra.haskell.syntax.TypeSignature")---- | DSL updater for the name field of hydra.haskell.syntax.TypeSignature-typeSignatureWithName :: Typed.TypedTerm Syntax.TypeSignature -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.TypeSignature-typeSignatureWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.TypeSignature"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypeSignature"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.haskell.syntax.TypeSignature-typeSignatureWithType :: Typed.TypedTerm Syntax.TypeSignature -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypeSignature-typeSignatureWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.TypeSignature"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypeSignature"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.haskell.syntax.TypeSynonymDeclaration-typeSynonymDeclaration :: Typed.TypedTerm Syntax.DeclarationHead -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.TypeSynonymDeclaration-typeSynonymDeclaration name type_ comments =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm comments)}]}))---- | DSL accessor for the comments field of hydra.haskell.syntax.TypeSynonymDeclaration-typeSynonymDeclarationComments :: Typed.TypedTerm Syntax.TypeSynonymDeclaration -> Typed.TypedTerm (Maybe String)-typeSynonymDeclarationComments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),-        Core.projectionFieldName = (Core.Name "comments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the name field of hydra.haskell.syntax.TypeSynonymDeclaration-typeSynonymDeclarationName :: Typed.TypedTerm Syntax.TypeSynonymDeclaration -> Typed.TypedTerm Syntax.DeclarationHead-typeSynonymDeclarationName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.haskell.syntax.TypeSynonymDeclaration-typeSynonymDeclarationType :: Typed.TypedTerm Syntax.TypeSynonymDeclaration -> Typed.TypedTerm Syntax.Type-typeSynonymDeclarationType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.TypeSynonymDeclaration-typeSynonymDeclarationTypeSynonymDeclaration :: Typed.TypedName Syntax.TypeSynonymDeclaration-typeSynonymDeclarationTypeSynonymDeclaration = Typed.TypedName (Core.Name "hydra.haskell.syntax.TypeSynonymDeclaration")---- | DSL updater for the comments field of hydra.haskell.syntax.TypeSynonymDeclaration-typeSynonymDeclarationWithComments :: Typed.TypedTerm Syntax.TypeSynonymDeclaration -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.TypeSynonymDeclaration-typeSynonymDeclarationWithComments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the name field of hydra.haskell.syntax.TypeSynonymDeclaration-typeSynonymDeclarationWithName :: Typed.TypedTerm Syntax.TypeSynonymDeclaration -> Typed.TypedTerm Syntax.DeclarationHead -> Typed.TypedTerm Syntax.TypeSynonymDeclaration-typeSynonymDeclarationWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.haskell.syntax.TypeSynonymDeclaration-typeSynonymDeclarationWithType :: Typed.TypedTerm Syntax.TypeSynonymDeclaration -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypeSynonymDeclaration-typeSynonymDeclarationWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the tuple variant of hydra.haskell.syntax.Type-typeTuple :: Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.Type-typeTuple x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Type"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "tuple"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.haskell.syntax.Type-typeType :: Typed.TypedName Syntax.Type-typeType = Typed.TypedName (Core.Name "hydra.haskell.syntax.Type")---- | DSL injection for the variable variant of hydra.haskell.syntax.Type-typeVariable :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Type-typeVariable x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.Type"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "variable"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.haskell.syntax.TypedBinding-typedBinding :: Typed.TypedTerm Syntax.TypeSignature -> Typed.TypedTerm Syntax.ValueBinding -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.TypedBinding-typedBinding typeSignature valueBinding comments =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.TypedBinding"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeSignature"),-          Core.fieldTerm = (Typed.unTypedTerm typeSignature)},-        Core.Field {-          Core.fieldName = (Core.Name "valueBinding"),-          Core.fieldTerm = (Typed.unTypedTerm valueBinding)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm comments)}]}))---- | DSL accessor for the comments field of hydra.haskell.syntax.TypedBinding-typedBindingComments :: Typed.TypedTerm Syntax.TypedBinding -> Typed.TypedTerm (Maybe String)-typedBindingComments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypedBinding"),-        Core.projectionFieldName = (Core.Name "comments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the typeSignature field of hydra.haskell.syntax.TypedBinding-typedBindingTypeSignature :: Typed.TypedTerm Syntax.TypedBinding -> Typed.TypedTerm Syntax.TypeSignature-typedBindingTypeSignature x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypedBinding"),-        Core.projectionFieldName = (Core.Name "typeSignature")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.TypedBinding-typedBindingTypedBinding :: Typed.TypedName Syntax.TypedBinding-typedBindingTypedBinding = Typed.TypedName (Core.Name "hydra.haskell.syntax.TypedBinding")---- | DSL accessor for the valueBinding field of hydra.haskell.syntax.TypedBinding-typedBindingValueBinding :: Typed.TypedTerm Syntax.TypedBinding -> Typed.TypedTerm Syntax.ValueBinding-typedBindingValueBinding x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypedBinding"),-        Core.projectionFieldName = (Core.Name "valueBinding")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the comments field of hydra.haskell.syntax.TypedBinding-typedBindingWithComments :: Typed.TypedTerm Syntax.TypedBinding -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.TypedBinding-typedBindingWithComments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.TypedBinding"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeSignature"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypedBinding"),-              Core.projectionFieldName = (Core.Name "typeSignature")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "valueBinding"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypedBinding"),-              Core.projectionFieldName = (Core.Name "valueBinding")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the typeSignature field of hydra.haskell.syntax.TypedBinding-typedBindingWithTypeSignature :: Typed.TypedTerm Syntax.TypedBinding -> Typed.TypedTerm Syntax.TypeSignature -> Typed.TypedTerm Syntax.TypedBinding-typedBindingWithTypeSignature original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.TypedBinding"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeSignature"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "valueBinding"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypedBinding"),-              Core.projectionFieldName = (Core.Name "valueBinding")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypedBinding"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the valueBinding field of hydra.haskell.syntax.TypedBinding-typedBindingWithValueBinding :: Typed.TypedTerm Syntax.TypedBinding -> Typed.TypedTerm Syntax.ValueBinding -> Typed.TypedTerm Syntax.TypedBinding-typedBindingWithValueBinding original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.TypedBinding"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeSignature"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypedBinding"),-              Core.projectionFieldName = (Core.Name "typeSignature")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "valueBinding"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypedBinding"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.haskell.syntax.TypedExpression-typedExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypedExpression-typedExpression inner type_ =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.TypedExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "inner"),-          Core.fieldTerm = (Typed.unTypedTerm inner)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)}]}))---- | DSL accessor for the inner field of hydra.haskell.syntax.TypedExpression-typedExpressionInner :: Typed.TypedTerm Syntax.TypedExpression -> Typed.TypedTerm Syntax.Expression-typedExpressionInner x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypedExpression"),-        Core.projectionFieldName = (Core.Name "inner")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.haskell.syntax.TypedExpression-typedExpressionType :: Typed.TypedTerm Syntax.TypedExpression -> Typed.TypedTerm Syntax.Type-typedExpressionType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypedExpression"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.TypedExpression-typedExpressionTypedExpression :: Typed.TypedName Syntax.TypedExpression-typedExpressionTypedExpression = Typed.TypedName (Core.Name "hydra.haskell.syntax.TypedExpression")---- | DSL updater for the inner field of hydra.haskell.syntax.TypedExpression-typedExpressionWithInner :: Typed.TypedTerm Syntax.TypedExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.TypedExpression-typedExpressionWithInner original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.TypedExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "inner"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypedExpression"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.haskell.syntax.TypedExpression-typedExpressionWithType :: Typed.TypedTerm Syntax.TypedExpression -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypedExpression-typedExpressionWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.TypedExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "inner"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypedExpression"),-              Core.projectionFieldName = (Core.Name "inner")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.haskell.syntax.TypedPattern-typedPattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypedPattern-typedPattern inner type_ =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.TypedPattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "inner"),-          Core.fieldTerm = (Typed.unTypedTerm inner)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)}]}))---- | DSL accessor for the inner field of hydra.haskell.syntax.TypedPattern-typedPatternInner :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.Pattern-typedPatternInner x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypedPattern"),-        Core.projectionFieldName = (Core.Name "inner")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.haskell.syntax.TypedPattern-typedPatternType :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.Type-typedPatternType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypedPattern"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.TypedPattern-typedPatternTypedPattern :: Typed.TypedName Syntax.TypedPattern-typedPatternTypedPattern = Typed.TypedName (Core.Name "hydra.haskell.syntax.TypedPattern")---- | DSL updater for the inner field of hydra.haskell.syntax.TypedPattern-typedPatternWithInner :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.TypedPattern-typedPatternWithInner original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.TypedPattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "inner"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypedPattern"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.haskell.syntax.TypedPattern-typedPatternWithType :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypedPattern-typedPatternWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.haskell.syntax.TypedPattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "inner"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.haskell.syntax.TypedPattern"),-              Core.projectionFieldName = (Core.Name "inner")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL accessor for the body of hydra.haskell.syntax.CaseRhs-unCaseRhs :: Typed.TypedTerm Syntax.CaseRhs -> Typed.TypedTerm Syntax.Expression-unCaseRhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.haskell.syntax.CaseRhs")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.haskell.syntax.DerivingClause-unDerivingClause :: Typed.TypedTerm Syntax.DerivingClause -> Typed.TypedTerm [Syntax.Name]-unDerivingClause x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.haskell.syntax.DerivingClause")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.haskell.syntax.LocalBindings-unLocalBindings :: Typed.TypedTerm Syntax.LocalBindings -> Typed.TypedTerm [Syntax.LocalBinding]-unLocalBindings x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.haskell.syntax.LocalBindings")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.haskell.syntax.ModuleName-unModuleName :: Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm String-unModuleName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.haskell.syntax.ModuleName")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.haskell.syntax.NamePart-unNamePart :: Typed.TypedTerm Syntax.NamePart -> Typed.TypedTerm String-unNamePart x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.haskell.syntax.NamePart")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.haskell.syntax.RightHandSide-unRightHandSide :: Typed.TypedTerm Syntax.RightHandSide -> Typed.TypedTerm Syntax.Expression-unRightHandSide x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.haskell.syntax.RightHandSide")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.haskell.syntax.Statement-unStatement :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.Expression-unStatement x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.haskell.syntax.Statement")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.haskell.syntax.Variable-unVariable :: Typed.TypedTerm Syntax.Variable -> Typed.TypedTerm Syntax.Name-unVariable x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.haskell.syntax.Variable")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL injection for the simple variant of hydra.haskell.syntax.ValueBinding-valueBindingSimple :: Typed.TypedTerm Syntax.SimpleValueBinding -> Typed.TypedTerm Syntax.ValueBinding-valueBindingSimple x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.haskell.syntax.ValueBinding"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "simple"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.haskell.syntax.ValueBinding-valueBindingValueBinding :: Typed.TypedName Syntax.ValueBinding-valueBindingValueBinding = Typed.TypedName (Core.Name "hydra.haskell.syntax.ValueBinding")---- | DSL constructor for the hydra.haskell.syntax.Variable wrapper-variable :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Variable-variable x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.haskell.syntax.Variable"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.haskell.syntax.Variable-variableVariable :: Typed.TypedName Syntax.Variable-variableVariable = Typed.TypedName (Core.Name "hydra.haskell.syntax.Variable")
src/main/haskell/Hydra/Haskell/Coder.hs view
@@ -4,69 +4,71 @@  module Hydra.Haskell.Coder where -import qualified Hydra.Adapt as Adapt-import qualified Hydra.Analysis as Analysis-import qualified Hydra.Annotations as Annotations-import qualified Hydra.Ast as Ast-import qualified Hydra.Coders as Coders-import qualified Hydra.Constants as Constants-import qualified Hydra.Core as Core-import qualified Hydra.Dependencies as Dependencies-import qualified Hydra.Docs as Docs-import qualified Hydra.Encode.Core as EncodeCore-import qualified Hydra.Error.Checking as Checking-import qualified Hydra.Error.Core as ErrorCore-import qualified Hydra.Error.File as ErrorFile-import qualified Hydra.Error.Packaging as ErrorPackaging-import qualified Hydra.Error.System as ErrorSystem-import qualified Hydra.Errors as Errors-import qualified Hydra.File as File-import qualified Hydra.Formatting as Formatting-import qualified Hydra.Graph as Graph+import qualified Hydra.Core.Adapt as Adapt+import qualified Hydra.Core.Analysis as Analysis+import qualified Hydra.Core.Annotations as Annotations+import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Constants as Constants+import qualified Hydra.Core.Dependencies as Dependencies+import qualified Hydra.Core.Diff as Diff+import qualified Hydra.Core.Docs as Docs+import qualified Hydra.Core.Encode.Model as EncodeModel+import qualified Hydra.Core.Error.Checking as Checking+import qualified Hydra.Core.Error.File as ErrorFile+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Error.System as ErrorSystem+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.File as File+import qualified Hydra.Core.Formatting as Formatting+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Lexical as Lexical+import qualified Hydra.Core.Overlay.Haskell.Lib.Eithers as Eithers+import qualified Hydra.Core.Overlay.Haskell.Lib.Equality as Equality+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists+import qualified Hydra.Core.Overlay.Haskell.Lib.Literals as Literals+import qualified Hydra.Core.Overlay.Haskell.Lib.Logic as Logic+import qualified Hydra.Core.Overlay.Haskell.Lib.Maps as Maps+import qualified Hydra.Core.Overlay.Haskell.Lib.Math as Math+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals+import qualified Hydra.Core.Overlay.Haskell.Lib.Pairs as Pairs+import qualified Hydra.Core.Overlay.Haskell.Lib.Sets as Sets+import qualified Hydra.Core.Overlay.Haskell.Lib.Strings as Strings+import qualified Hydra.Core.Markdown as Markdown+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Names as Names+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Predicates as Predicates+import qualified Hydra.Core.Print.Errors as PrintErrors+import qualified Hydra.Core.Print.Model as PrintModel+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Regex as Regex+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.Resolution as Resolution+import qualified Hydra.Core.Rewriting as Rewriting+import qualified Hydra.Core.Scoping as Scoping+import qualified Hydra.Core.Serialization as Serialization+import qualified Hydra.Core.Strip as Strip+import qualified Hydra.Core.System as System+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Time as Time+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variables as Variables+import qualified Hydra.Core.Variants as Variants import qualified Hydra.Haskell.Environment as Environment import qualified Hydra.Haskell.Language as Language import qualified Hydra.Haskell.Serde as Serde import qualified Hydra.Haskell.Syntax as Syntax import qualified Hydra.Haskell.Utils as Utils-import qualified Hydra.Json.Model as Model-import qualified Hydra.Lexical as Lexical-import qualified Hydra.Overlay.Haskell.Lib.Eithers as Eithers-import qualified Hydra.Overlay.Haskell.Lib.Equality as Equality-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists-import qualified Hydra.Overlay.Haskell.Lib.Literals as Literals-import qualified Hydra.Overlay.Haskell.Lib.Logic as Logic-import qualified Hydra.Overlay.Haskell.Lib.Maps as Maps-import qualified Hydra.Overlay.Haskell.Lib.Math as Math-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals-import qualified Hydra.Overlay.Haskell.Lib.Pairs as Pairs-import qualified Hydra.Overlay.Haskell.Lib.Sets as Sets-import qualified Hydra.Overlay.Haskell.Lib.Strings as Strings-import qualified Hydra.Names as Names-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Parsing as Parsing-import qualified Hydra.Paths as Paths-import qualified Hydra.Predicates as Predicates-import qualified Hydra.Print.Core as PrintCore-import qualified Hydra.Print.Errors as PrintErrors-import qualified Hydra.Query as Query-import qualified Hydra.Regex as Regex-import qualified Hydra.Relational as Relational-import qualified Hydra.Resolution as Resolution-import qualified Hydra.Rewriting as Rewriting-import qualified Hydra.Scoping as Scoping-import qualified Hydra.Serialization as Serialization-import qualified Hydra.Strip as Strip-import qualified Hydra.System as System-import qualified Hydra.Tabular as Tabular-import qualified Hydra.Testing as Testing-import qualified Hydra.Time as Time-import qualified Hydra.Topology as Topology-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import qualified Hydra.Util as Util-import qualified Hydra.Validation as Validation-import qualified Hydra.Variables as Variables-import qualified Hydra.Variants as Variants import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import Data.Void@@ -74,25 +76,25 @@ import qualified Data.Set as S  -- | Adapt a Hydra type to Haskell's type system and encode it-adaptTypeToHaskellAndEncode :: Util.ModuleNames Syntax.ModuleName -> Core.Type -> t0 -> t1 -> Either Errors.Error Syntax.Type+adaptTypeToHaskellAndEncode :: Util.ModuleNames Syntax.ModuleName -> Model.Type -> t0 -> t1 -> Either Errors.Error Syntax.Type adaptTypeToHaskellAndEncode namespaces typ cx g =        let enc = \t -> encodeType namespaces t cx g       in case (Strip.deannotateType typ) of-        Core.TypeVariable _ -> enc typ+        Model.TypeVariable _ -> enc typ         _ -> Eithers.bind (Adapt.adaptTypeForLanguage Language.haskellLanguage typ) (\adaptedType -> enc adaptedType)  -- | Generate a constant name for a field (e.g., '_TypeName_fieldName')-constantForFieldName :: Core.Name -> Core.Name -> String+constantForFieldName :: Model.Name -> Model.Name -> String constantForFieldName tname fname =     Strings.concat [       "_",       (Names.localNameOf tname),       "_",-      (Core.unName fname)]+      (Model.unName fname)]  -- | Generate a constant name for a type (e.g., '_TypeName')-constantForTypeName :: Core.Name -> String+constantForTypeName :: Model.Name -> String constantForTypeName tname = Strings.concat2 "_" (Names.localNameOf tname)  -- | Construct a Haskell module from a Hydra module and its definitions@@ -104,15 +106,16 @@                   \namespace ->                     let raw = Packaging.unModuleName namespace                         parts = Strings.splitOn "." raw-                        sub = Strings.join "." (Lists.drop 2 parts)-                    in (Logic.ifElse (Logic.and (Logic.and (Equality.equal (Lists.length parts) 3) (Equality.equal (Lists.take 2 parts) [+                        sub = Strings.join "." (Lists.drop 3 parts)+                    in (Logic.ifElse (Logic.and (Logic.and (Equality.equal (Lists.length parts) 4) (Equality.equal (Lists.take 3 parts) [                       "hydra",-                      "lib"])) (Sets.member sub overlaySubs)) (Strings.concat2 "hydra.overlay.haskell.lib." sub) raw)+                      "core",+                      "lib"])) (Sets.member sub overlaySubs)) (Strings.concat2 "hydra.core.overlay.haskell.lib." sub) raw)           createDeclarations =                   \def -> case def of                     Packaging.DefinitionType v0 ->                       let name = Packaging.typeDefinitionName v0-                          typ = Core.typeSchemeBody (Packaging.typeDefinitionBody v0)+                          typ = Model.typeSchemeBody (Packaging.typeDefinitionBody v0)                       in (toTypeDeclarationsFrom namespaces name typ cx g)                     Packaging.DefinitionTerm v0 -> Eithers.bind (toDataDeclaration namespaces v0 cx g) (\d -> Right [                       d])@@ -174,7 +177,7 @@                       (condImport (Environment.haskellModuleMetadataUsesMap meta) (("Data.Map", (Just "M")), [])),                       (condImport (Environment.haskellModuleMetadataUsesSet meta) (("Data.Set", (Just "S")), [])),                       (Logic.ifElse (Logic.or (Analysis.moduleContainsBinaryLiterals mod) (Analysis.moduleContainsDecimalLiterals mod)) [-                        (("Hydra.Overlay.Haskell.Lib.Literals", (Just "Literals")), [])] [])]))+                        (("Hydra.Core.Overlay.Haskell.Lib.Literals", (Just "Literals")), [])] [])]))       in (Eithers.bind (Eithers.mapList createDeclarations defs) (\declLists ->         let decls = Lists.concat declLists             mc = Optionals.bind (Packaging.moduleMetadata mod) (\em -> Packaging.entityMetadataDescription em)@@ -197,33 +200,33 @@       Environment.haskellModuleMetadataUsesVoid = False}  -- | Encode a Hydra case statement as a Haskell case expression with a given scrutinee-encodeCaseExpression :: Int -> Util.ModuleNames Syntax.ModuleName -> Core.CaseStatement -> Syntax.Expression -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Expression+encodeCaseExpression :: Int -> Util.ModuleNames Syntax.ModuleName -> Model.CaseStatement -> Syntax.Expression -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Expression encodeCaseExpression depth namespaces stmt scrutinee cx g = -      let dn = Core.caseStatementTypeName stmt-          def = Core.caseStatementDefault stmt-          fields = Core.caseStatementCases stmt+      let dn = Model.caseStatementTypeName stmt+          def = Model.caseStatementDefault stmt+          fields = Model.caseStatementCases stmt           toAlt =                   \fieldMap -> \field ->-                    let fn = Core.caseAlternativeName field-                        fun_ = Core.caseAlternativeHandler field+                    let fn = Model.caseAlternativeName field+                        fun_ = Model.caseAlternativeHandler field                         v0 = Strings.concat2 "v" (Literals.printInt32 depth)                         raw =-                                Core.TermApplication (Core.Application {-                                  Core.applicationFunction = fun_,-                                  Core.applicationArgument = (Core.TermVariable (Core.Name v0))})+                                Model.TermApplication (Model.Application {+                                  Model.applicationFunction = fun_,+                                  Model.applicationArgument = (Model.TermVariable (Model.Name v0))})                         rhsTerm = Dependencies.simplifyTerm raw-                        v1 = Logic.ifElse (Variables.isFreeVariableInTerm (Core.Name v0) rhsTerm) Constants.ignoredVariable v0+                        v1 = Logic.ifElse (Variables.isFreeVariableInTerm (Model.Name v0) rhsTerm) Constants.ignoredVariable v0                         hname =                                 Utils.unionFieldReference (Sets.union (Sets.fromList (Maps.keys (Graph.graphBoundTerms g))) (Sets.fromList (Maps.keys (Graph.graphSchemaTypes g)))) namespaces dn fn                     in (Eithers.bind (Optionals.match (Maps.lookup fn fieldMap) (Left (Errors.ErrorResolution (Errors.ResolutionErrorNoMatchingField (Errors.NoMatchingFieldError {                       Errors.noMatchingFieldErrorFieldName = fn})))) (\fieldType ->-                      let ft = Core.fieldTypeType fieldType+                      let ft = Model.fieldTypeType fieldType                           noArgs = []                           singleArg = [                                 Syntax.PatternName (Utils.rawName v1)]                       in case (Strip.deannotateType ft) of-                        Core.TypeUnit -> Right noArgs+                        Model.TypeUnit -> Right noArgs                         _ -> Right singleArg)) (\args ->                       let lhs = Utils.applicationPattern hname args                       in (Eithers.bind (Eithers.map (\x -> Syntax.CaseRhs x) (encodeTerm (Math.add depth 1) namespaces rhsTerm cx g)) (\rhs -> Right (Syntax.Alternative {@@ -231,7 +234,7 @@                         Syntax.alternativeRhs = rhs,                         Syntax.alternativeBinds = Nothing})))))       in (Eithers.bind (Resolution.requireUnionType cx g dn) (\rt ->-        let toFieldMapEntry = \f -> (Core.fieldTypeName f, f)+        let toFieldMapEntry = \f -> (Model.fieldTypeName f, f)             fieldMap = Maps.fromList (Lists.map toFieldMapEntry rt)         in (Eithers.bind (Eithers.mapList (toAlt fieldMap) fields) (\ecases -> Eithers.bind (Optionals.match def (Right []) (\d -> Eithers.bind (Eithers.map (\x -> Syntax.CaseRhs x) (encodeTerm depth namespaces d cx g)) (\cs ->           let lhs = Syntax.PatternName (Utils.rawName Constants.ignoredVariable)@@ -246,53 +249,53 @@           Syntax.caseExpressionAlternatives = (Lists.concat2 ecases dcases)})))))))  -- | Encode a Hydra lambda as a Haskell expression-encodeLambdaTerm :: Int -> Util.ModuleNames Syntax.ModuleName -> Core.Lambda -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Expression+encodeLambdaTerm :: Int -> Util.ModuleNames Syntax.ModuleName -> Model.Lambda -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Expression encodeLambdaTerm depth namespaces lam cx g = -      let v = Core.lambdaParameter lam-          body = Core.lambdaBody lam+      let v = Model.lambdaParameter lam+          body = Model.lambdaBody lam       in (Eithers.bind (encodeTerm depth namespaces body cx g) (\hbody -> Right (Utils.hslambda (Utils.elementReference namespaces v) hbody)))  -- | Encode a Hydra literal as a Haskell expression-encodeLiteral :: Core.Literal -> t0 -> Either Errors.Error Syntax.Expression+encodeLiteral :: Model.Literal -> t0 -> Either Errors.Error Syntax.Expression encodeLiteral l cx =     case l of-      Core.LiteralBinary v0 -> Right (Utils.hsapp (Utils.hsvar "Literals.base64ToBinary") (Utils.hslit (Syntax.LiteralString (Literals.binaryToBase64 v0))))-      Core.LiteralBoolean v0 -> Right (Utils.hsvar (Logic.ifElse v0 "True" "False"))-      Core.LiteralDecimal v0 -> Right (Utils.hsapp (Utils.hsvar "Literals.stringToDecimal") (Utils.hslit (Syntax.LiteralString (Literals.printDecimal v0))))-      Core.LiteralFloat v0 -> case v0 of-        Core.FloatValueFloat32 v1 -> Right (Utils.hslit (Syntax.LiteralFloat v1))-        Core.FloatValueFloat64 v1 -> Right (Utils.hslit (Syntax.LiteralDouble v1))-      Core.LiteralInteger v0 -> case v0 of-        Core.IntegerValueBigint v1 -> Right (Utils.hslit (Syntax.LiteralInteger v1))-        Core.IntegerValueInt8 v1 -> Right (Utils.hslit (Syntax.LiteralInteger (Literals.int8ToBigint v1)))-        Core.IntegerValueInt16 v1 -> Right (Utils.hslit (Syntax.LiteralInteger (Literals.int16ToBigint v1)))-        Core.IntegerValueInt32 v1 -> Right (Utils.hslit (Syntax.LiteralInt v1))-        Core.IntegerValueInt64 v1 -> Right (Utils.hslit (Syntax.LiteralInteger (Literals.int64ToBigint v1)))-        Core.IntegerValueUint8 v1 -> Right (Utils.hslit (Syntax.LiteralInteger (Literals.uint8ToBigint v1)))-        Core.IntegerValueUint16 v1 -> Right (Utils.hslit (Syntax.LiteralInteger (Literals.uint16ToBigint v1)))-        Core.IntegerValueUint32 v1 -> Right (Utils.hslit (Syntax.LiteralInteger (Literals.uint32ToBigint v1)))-        Core.IntegerValueUint64 v1 -> Right (Utils.hslit (Syntax.LiteralInteger (Literals.uint64ToBigint v1)))-      Core.LiteralString v0 -> Right (Utils.hslit (Syntax.LiteralString v0))+      Model.LiteralBinary v0 -> Right (Utils.hsapp (Utils.hsvar "Literals.base64ToBinary") (Utils.hslit (Syntax.LiteralString (Literals.binaryToBase64 v0))))+      Model.LiteralBoolean v0 -> Right (Utils.hsvar (Logic.ifElse v0 "True" "False"))+      Model.LiteralDecimal v0 -> Right (Utils.hsapp (Utils.hsvar "Literals.stringToDecimal") (Utils.hslit (Syntax.LiteralString (Literals.printDecimal v0))))+      Model.LiteralFloat v0 -> case v0 of+        Model.FloatValueFloat32 v1 -> Right (Utils.hslit (Syntax.LiteralFloat v1))+        Model.FloatValueFloat64 v1 -> Right (Utils.hslit (Syntax.LiteralDouble v1))+      Model.LiteralInteger v0 -> case v0 of+        Model.IntegerValueBigint v1 -> Right (Utils.hslit (Syntax.LiteralInteger v1))+        Model.IntegerValueInt8 v1 -> Right (Utils.hslit (Syntax.LiteralInteger (Literals.int8ToBigint v1)))+        Model.IntegerValueInt16 v1 -> Right (Utils.hslit (Syntax.LiteralInteger (Literals.int16ToBigint v1)))+        Model.IntegerValueInt32 v1 -> Right (Utils.hslit (Syntax.LiteralInt v1))+        Model.IntegerValueInt64 v1 -> Right (Utils.hslit (Syntax.LiteralInteger (Literals.int64ToBigint v1)))+        Model.IntegerValueUint8 v1 -> Right (Utils.hslit (Syntax.LiteralInteger (Literals.uint8ToBigint v1)))+        Model.IntegerValueUint16 v1 -> Right (Utils.hslit (Syntax.LiteralInteger (Literals.uint16ToBigint v1)))+        Model.IntegerValueUint32 v1 -> Right (Utils.hslit (Syntax.LiteralInteger (Literals.uint32ToBigint v1)))+        Model.IntegerValueUint64 v1 -> Right (Utils.hslit (Syntax.LiteralInteger (Literals.uint64ToBigint v1)))+      Model.LiteralString v0 -> Right (Utils.hslit (Syntax.LiteralString v0))       _ -> Left (Errors.ErrorExtraction (Errors.ExtractionErrorUnexpectedShape (Errors.UnexpectedShapeError {         Errors.unexpectedShapeErrorExpected = "supported literal",-        Errors.unexpectedShapeErrorActual = (PrintCore.literal l)})))+        Errors.unexpectedShapeErrorActual = (PrintModel.literal l)})))  -- | Encode a record projection as a Haskell expression-encodeProjection :: Util.ModuleNames Syntax.ModuleName -> Core.Projection -> Either t0 Syntax.Expression+encodeProjection :: Util.ModuleNames Syntax.ModuleName -> Model.Projection -> Either t0 Syntax.Expression encodeProjection namespaces proj = -      let dn = Core.projectionTypeName proj-          fname = Core.projectionFieldName proj+      let dn = Model.projectionTypeName proj+          fname = Model.projectionFieldName proj       in (Right (Syntax.ExpressionVariable (Utils.recordFieldReference namespaces dn fname)))  -- | Encode a standalone (un-applied) case statement as a Haskell lambda over a case expression-encodeStandaloneCases :: Int -> Util.ModuleNames Syntax.ModuleName -> Core.CaseStatement -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Expression+encodeStandaloneCases :: Int -> Util.ModuleNames Syntax.ModuleName -> Model.CaseStatement -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Expression encodeStandaloneCases depth namespaces stmt cx g =     Eithers.map (Utils.hslambda (Utils.rawName "x")) (encodeCaseExpression depth namespaces stmt (Utils.hsvar "x") cx g)  -- | Encode a Hydra term as a Haskell expression-encodeTerm :: Int -> Util.ModuleNames Syntax.ModuleName -> Core.Term -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Expression+encodeTerm :: Int -> Util.ModuleNames Syntax.ModuleName -> Model.Term -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Expression encodeTerm depth namespaces term cx g =        let encode = \t -> encodeTerm depth namespaces t cx g@@ -310,27 +313,27 @@           nonemptySet =                   \s ->                     let lhs = Utils.hsvar "S.fromList"-                    in (Eithers.bind (encodeTerm depth namespaces (Core.TermList (Sets.toList s)) cx g) (\rhs -> Right (Utils.hsapp lhs rhs)))+                    in (Eithers.bind (encodeTerm depth namespaces (Model.TermList (Sets.toList s)) cx g) (\rhs -> Right (Utils.hsapp lhs rhs)))       in case (Strip.deannotateTerm term) of-        Core.TermApplication v0 ->-          let fun = Core.applicationFunction v0-              arg = Core.applicationArgument v0+        Model.TermApplication v0 ->+          let fun = Model.applicationFunction v0+              arg = Model.applicationArgument v0               deannotatedFun = Strip.deannotateTerm fun           in case deannotatedFun of-            Core.TermCases v1 -> Eithers.bind (encode arg) (\harg -> encodeCaseExpression depth namespaces v1 harg cx g)+            Model.TermCases v1 -> Eithers.bind (encode arg) (\harg -> encodeCaseExpression depth namespaces v1 harg cx g)             _ -> Eithers.bind (encode fun) (\hfun -> Eithers.bind (encode arg) (\harg -> Right (Utils.hsapp hfun harg)))-        Core.TermCases v0 -> encodeStandaloneCases depth namespaces v0 cx g-        Core.TermEither v0 -> Eithers.either (\l -> Eithers.bind (encode l) (\hl -> Right (Utils.hsapp (Utils.hsvar "Left") hl))) (\r -> Eithers.bind (encode r) (\hr -> Right (Utils.hsapp (Utils.hsvar "Right") hr))) v0-        Core.TermLambda v0 -> encodeLambdaTerm depth namespaces v0 cx g-        Core.TermProject v0 -> encodeProjection namespaces v0-        Core.TermUnwrap v0 -> encodeUnwrap namespaces v0-        Core.TermLet v0 ->+        Model.TermCases v0 -> encodeStandaloneCases depth namespaces v0 cx g+        Model.TermEither v0 -> Eithers.either (\l -> Eithers.bind (encode l) (\hl -> Right (Utils.hsapp (Utils.hsvar "Left") hl))) (\r -> Eithers.bind (encode r) (\hr -> Right (Utils.hsapp (Utils.hsvar "Right") hr))) v0+        Model.TermLambda v0 -> encodeLambdaTerm depth namespaces v0 cx g+        Model.TermProject v0 -> encodeProjection namespaces v0+        Model.TermUnwrap v0 -> encodeUnwrap namespaces v0+        Model.TermLet v0 ->           let collectBindings =                   \lt ->-                    let bs = Core.letBindings lt-                        body = Core.letBody lt+                    let bs = Model.letBindings lt+                        body = Model.letBody lt                     in case (Strip.deannotateTerm body) of-                      Core.TermLet v1 ->+                      Model.TermLet v1 ->                         let innerResult = collectBindings v1                         in (Lists.concat2 bs (Pairs.first innerResult), (Pairs.second innerResult))                       _ -> (bs, body)@@ -339,27 +342,27 @@               finalBody = Pairs.second collected               encodeBinding =                       \binding ->-                        let name = Core.bindingName binding-                            term_ = Core.bindingTerm binding-                            hname = Utils.simpleName (Core.unName name)+                        let name = Model.bindingName binding+                            term_ = Model.bindingTerm binding+                            hname = Utils.simpleName (Model.unName name)                         in (Eithers.bind (encode term_) (\hexpr -> Right (Syntax.LocalBindingValue (Utils.simpleValueBinding hname hexpr Nothing))))           in (Eithers.bind (Eithers.mapList encodeBinding allBindings) (\hbindings -> Eithers.bind (encode finalBody) (\hinner -> Right (Syntax.ExpressionLet (Syntax.LetExpression {             Syntax.letExpressionBindings = hbindings,             Syntax.letExpressionInner = hinner})))))-        Core.TermList v0 -> Eithers.bind (Eithers.mapList encode v0) (\helems -> Right (Syntax.ExpressionList helems))-        Core.TermLiteral v0 -> encodeLiteral v0 cx-        Core.TermMap v0 -> Logic.ifElse (Maps.isEmpty v0) (Right (Utils.hsvar "M.empty")) (nonemptyMap v0)-        Core.TermOptional v0 -> Optionals.match v0 (Right (Utils.hsvar "Nothing")) (\t -> Eithers.bind (encode t) (\ht -> Right (Utils.hsapp (Utils.hsvar "Just") ht)))-        Core.TermPair v0 -> Eithers.bind (encode (Pairs.first v0)) (\f -> Eithers.bind (encode (Pairs.second v0)) (\s -> Right (Syntax.ExpressionTuple [+        Model.TermList v0 -> Eithers.bind (Eithers.mapList encode v0) (\helems -> Right (Syntax.ExpressionList helems))+        Model.TermLiteral v0 -> encodeLiteral v0 cx+        Model.TermMap v0 -> Logic.ifElse (Maps.isEmpty v0) (Right (Utils.hsvar "M.empty")) (nonemptyMap v0)+        Model.TermOptional v0 -> Optionals.match v0 (Right (Utils.hsvar "Nothing")) (\t -> Eithers.bind (encode t) (\ht -> Right (Utils.hsapp (Utils.hsvar "Just") ht)))+        Model.TermPair v0 -> Eithers.bind (encode (Pairs.first v0)) (\f -> Eithers.bind (encode (Pairs.second v0)) (\s -> Right (Syntax.ExpressionTuple [           f,           s])))-        Core.TermRecord v0 ->-          let sname = Core.recordTypeName v0-              fields = Core.recordFields v0+        Model.TermRecord v0 ->+          let sname = Model.recordTypeName v0+              fields = Model.recordFields v0               toFieldUpdate =                       \field ->-                        let fn = Core.fieldName field-                            ft = Core.fieldTerm field+                        let fn = Model.fieldName field+                            ft = Model.fieldTerm field                             fieldRef = Utils.recordFieldReference namespaces sname fn                         in (Eithers.bind (encode ft) (\hft -> Right (Syntax.FieldUpdate {                           Syntax.fieldUpdateName = fieldRef,@@ -368,118 +371,118 @@           in (Eithers.bind (Eithers.mapList toFieldUpdate fields) (\updates -> Right (Syntax.ExpressionConstructRecord (Syntax.RecordExpression {             Syntax.recordExpressionName = typeName,             Syntax.recordExpressionFields = updates}))))-        Core.TermSet v0 -> Logic.ifElse (Sets.isEmpty v0) (Right (Utils.hsvar "S.empty")) (nonemptySet v0)-        Core.TermTypeLambda v0 ->-          let term1 = Core.typeLambdaBody v0+        Model.TermSet v0 -> Logic.ifElse (Sets.isEmpty v0) (Right (Utils.hsvar "S.empty")) (nonemptySet v0)+        Model.TermTypeLambda v0 ->+          let term1 = Model.typeLambdaBody v0           in (encode term1)-        Core.TermTypeApplication v0 ->-          let term1 = Core.typeApplicationTermBody v0+        Model.TermTypeApplication v0 ->+          let term1 = Model.typeApplicationTermBody v0           in (encode term1)-        Core.TermInject v0 ->-          let sname = Core.injectionTypeName v0-              field = Core.injectionField v0-              fn = Core.fieldName field-              ft = Core.fieldTerm field+        Model.TermInject v0 ->+          let sname = Model.injectionTypeName v0+              field = Model.injectionField v0+              fn = Model.fieldName field+              ft = Model.fieldTerm field               lhs =                       Syntax.ExpressionVariable (Utils.unionFieldReference (Sets.union (Sets.fromList (Maps.keys (Graph.graphBoundTerms g))) (Sets.fromList (Maps.keys (Graph.graphSchemaTypes g)))) namespaces sname fn)               dflt = Eithers.map (Utils.hsapp lhs) (encode ft)           in (Eithers.bind (Resolution.requireUnionField cx g sname fn) (\ftyp -> case (Strip.deannotateType ftyp) of-            Core.TypeUnit -> Right lhs+            Model.TypeUnit -> Right lhs             _ -> dflt))-        Core.TermUnit -> Right (Syntax.ExpressionTuple [])-        Core.TermVariable v0 -> Right (Syntax.ExpressionVariable (Utils.elementReference namespaces v0))-        Core.TermWrap v0 ->-          let tname = Core.wrappedTermTypeName v0-              term_ = Core.wrappedTermBody v0+        Model.TermUnit -> Right (Syntax.ExpressionTuple [])+        Model.TermVariable v0 -> Right (Syntax.ExpressionVariable (Utils.elementReference namespaces v0))+        Model.TermWrap v0 ->+          let tname = Model.wrappedTermTypeName v0+              term_ = Model.wrappedTermBody v0               lhs = Syntax.ExpressionVariable (Utils.elementReference namespaces tname)           in (Eithers.bind (encode term_) (\rhs -> Right (Utils.hsapp lhs rhs)))         _ -> Left (Errors.ErrorExtraction (Errors.ExtractionErrorUnexpectedShape (Errors.UnexpectedShapeError {           Errors.unexpectedShapeErrorExpected = "supported term",-          Errors.unexpectedShapeErrorActual = (PrintCore.term term)})))+          Errors.unexpectedShapeErrorActual = (PrintModel.term term)})))  -- | Encode a Hydra type as a Haskell type-encodeType :: Util.ModuleNames Syntax.ModuleName -> Core.Type -> t0 -> t1 -> Either Errors.Error Syntax.Type+encodeType :: Util.ModuleNames Syntax.ModuleName -> Model.Type -> t0 -> t1 -> Either Errors.Error Syntax.Type encodeType namespaces typ cx g =        let encode = \t -> encodeType namespaces t cx g           ref = \name -> Right (Syntax.TypeVariable (Utils.elementReference namespaces name))           unitTuple = Syntax.TypeTuple []       in case (Strip.deannotateType typ) of-        Core.TypeApplication v0 ->-          let lhs = Core.applicationTypeFunction v0-              rhs = Core.applicationTypeArgument v0+        Model.TypeApplication v0 ->+          let lhs = Model.applicationTypeFunction v0+              rhs = Model.applicationTypeArgument v0           in (Eithers.bind (encode lhs) (\hlhs -> Eithers.bind (encode rhs) (\hrhs -> Right (Utils.toTypeApplication [             hlhs,             hrhs]))))-        Core.TypeEither v0 ->-          let left_ = Core.eitherTypeLeft v0-              right_ = Core.eitherTypeRight v0+        Model.TypeEither v0 ->+          let left_ = Model.eitherTypeLeft v0+              right_ = Model.eitherTypeRight v0           in (Eithers.bind (encode left_) (\hleft -> Eithers.bind (encode right_) (\hright -> Right (Utils.toTypeApplication [             Syntax.TypeVariable (Utils.rawName "Either"),             hleft,             hright]))))-        Core.TypeEffect v0 -> Eithers.bind (encode v0) (\het -> Right (Utils.toTypeApplication [+        Model.TypeEffect v0 -> Eithers.bind (encode v0) (\het -> Right (Utils.toTypeApplication [           Syntax.TypeVariable (Utils.rawName "IO"),           het]))-        Core.TypeFunction v0 ->-          let dom = Core.functionTypeDomain v0-              cod = Core.functionTypeCodomain v0+        Model.TypeFunction v0 ->+          let dom = Model.functionTypeDomain v0+              cod = Model.functionTypeCodomain v0           in (Eithers.bind (encode dom) (\hdom -> Eithers.bind (encode cod) (\hcod -> Right (Syntax.TypeFunction (Syntax.FunctionType {             Syntax.functionTypeDomain = hdom,             Syntax.functionTypeCodomain = hcod})))))-        Core.TypeForall v0 ->-          let v = Core.forallTypeParameter v0-              body = Core.forallTypeBody v0+        Model.TypeForall v0 ->+          let v = Model.forallTypeParameter v0+              body = Model.forallTypeBody v0           in (encode body)-        Core.TypeList v0 -> Eithers.bind (encode v0) (\hlt -> Right (Syntax.TypeList hlt))-        Core.TypeLiteral v0 -> case v0 of-          Core.LiteralTypeBinary -> Right (Syntax.TypeVariable (Utils.rawName "B.ByteString"))-          Core.LiteralTypeBoolean -> Right (Syntax.TypeVariable (Utils.rawName "Bool"))-          Core.LiteralTypeDecimal -> Right (Syntax.TypeVariable (Utils.rawName "Sci.Scientific"))-          Core.LiteralTypeFloat v1 -> case v1 of-            Core.FloatTypeFloat32 -> Right (Syntax.TypeVariable (Utils.rawName "Float"))-            Core.FloatTypeFloat64 -> Right (Syntax.TypeVariable (Utils.rawName "Double"))-          Core.LiteralTypeInteger v1 -> case v1 of-            Core.IntegerTypeBigint -> Right (Syntax.TypeVariable (Utils.rawName "Integer"))-            Core.IntegerTypeInt8 -> Right (Syntax.TypeVariable (Utils.rawName "I.Int8"))-            Core.IntegerTypeInt16 -> Right (Syntax.TypeVariable (Utils.rawName "I.Int16"))-            Core.IntegerTypeInt32 -> Right (Syntax.TypeVariable (Utils.rawName "Int"))-            Core.IntegerTypeInt64 -> Right (Syntax.TypeVariable (Utils.rawName "I.Int64"))+        Model.TypeList v0 -> Eithers.bind (encode v0) (\hlt -> Right (Syntax.TypeList hlt))+        Model.TypeLiteral v0 -> case v0 of+          Model.LiteralTypeBinary -> Right (Syntax.TypeVariable (Utils.rawName "B.ByteString"))+          Model.LiteralTypeBoolean -> Right (Syntax.TypeVariable (Utils.rawName "Bool"))+          Model.LiteralTypeDecimal -> Right (Syntax.TypeVariable (Utils.rawName "Sci.Scientific"))+          Model.LiteralTypeFloat v1 -> case v1 of+            Model.FloatTypeFloat32 -> Right (Syntax.TypeVariable (Utils.rawName "Float"))+            Model.FloatTypeFloat64 -> Right (Syntax.TypeVariable (Utils.rawName "Double"))+          Model.LiteralTypeInteger v1 -> case v1 of+            Model.IntegerTypeBigint -> Right (Syntax.TypeVariable (Utils.rawName "Integer"))+            Model.IntegerTypeInt8 -> Right (Syntax.TypeVariable (Utils.rawName "I.Int8"))+            Model.IntegerTypeInt16 -> Right (Syntax.TypeVariable (Utils.rawName "I.Int16"))+            Model.IntegerTypeInt32 -> Right (Syntax.TypeVariable (Utils.rawName "Int"))+            Model.IntegerTypeInt64 -> Right (Syntax.TypeVariable (Utils.rawName "I.Int64"))             _ -> Left (Errors.ErrorExtraction (Errors.ExtractionErrorUnexpectedShape (Errors.UnexpectedShapeError {               Errors.unexpectedShapeErrorExpected = "supported integer type",-              Errors.unexpectedShapeErrorActual = (PrintCore.integerType v1)})))-          Core.LiteralTypeString -> Right (Syntax.TypeVariable (Utils.rawName "String"))+              Errors.unexpectedShapeErrorActual = (PrintModel.integerType v1)})))+          Model.LiteralTypeString -> Right (Syntax.TypeVariable (Utils.rawName "String"))           _ -> Left (Errors.ErrorExtraction (Errors.ExtractionErrorUnexpectedShape (Errors.UnexpectedShapeError {             Errors.unexpectedShapeErrorExpected = "supported literal type",-            Errors.unexpectedShapeErrorActual = (PrintCore.literalType v0)})))-        Core.TypeMap v0 ->-          let kt = Core.mapTypeKeys v0-              vt = Core.mapTypeValues v0+            Errors.unexpectedShapeErrorActual = (PrintModel.literalType v0)})))+        Model.TypeMap v0 ->+          let kt = Model.mapTypeKeys v0+              vt = Model.mapTypeValues v0           in (Eithers.bind (encode kt) (\hkt -> Eithers.bind (encode vt) (\hvt -> Right (Utils.toTypeApplication [             Syntax.TypeVariable (Utils.rawName "M.Map"),             hkt,             hvt]))))-        Core.TypeOptional v0 -> Eithers.bind (encode v0) (\hot -> Right (Utils.toTypeApplication [+        Model.TypeOptional v0 -> Eithers.bind (encode v0) (\hot -> Right (Utils.toTypeApplication [           Syntax.TypeVariable (Utils.rawName "Maybe"),           hot]))-        Core.TypePair v0 -> Eithers.bind (encode (Core.pairTypeFirst v0)) (\f -> Eithers.bind (encode (Core.pairTypeSecond v0)) (\s -> Right (Syntax.TypeTuple [+        Model.TypePair v0 -> Eithers.bind (encode (Model.pairTypeFirst v0)) (\f -> Eithers.bind (encode (Model.pairTypeSecond v0)) (\s -> Right (Syntax.TypeTuple [           f,           s])))-        Core.TypeRecord _ -> ref (Core.Name "placeholder")-        Core.TypeSet v0 -> Eithers.bind (encode v0) (\hst -> Right (Utils.toTypeApplication [+        Model.TypeRecord _ -> ref (Model.Name "placeholder")+        Model.TypeSet v0 -> Eithers.bind (encode v0) (\hst -> Right (Utils.toTypeApplication [           Syntax.TypeVariable (Utils.rawName "S.Set"),           hst]))-        Core.TypeUnion _ -> ref (Core.Name "placeholder")-        Core.TypeUnit -> Right unitTuple-        Core.TypeVariable v0 -> ref v0-        Core.TypeVoid -> Right (Syntax.TypeVariable (Utils.rawName "Void"))-        Core.TypeWrap _ -> ref (Core.Name "placeholder")+        Model.TypeUnion _ -> ref (Model.Name "placeholder")+        Model.TypeUnit -> Right unitTuple+        Model.TypeVariable v0 -> ref v0+        Model.TypeVoid -> Right (Syntax.TypeVariable (Utils.rawName "Void"))+        Model.TypeWrap _ -> ref (Model.Name "placeholder")         _ -> Left (Errors.ErrorExtraction (Errors.ExtractionErrorUnexpectedShape (Errors.UnexpectedShapeError {           Errors.unexpectedShapeErrorExpected = "supported type",-          Errors.unexpectedShapeErrorActual = (PrintCore.type_ typ)})))+          Errors.unexpectedShapeErrorActual = (PrintModel.type_ typ)})))  -- | Encode a Hydra type as a Haskell type with typeclass assertions-encodeTypeWithClassAssertions :: Util.ModuleNames Syntax.ModuleName -> M.Map Core.Name (S.Set Core.Name) -> Core.Type -> t0 -> t1 -> Either Errors.Error Syntax.Type+encodeTypeWithClassAssertions :: Util.ModuleNames Syntax.ModuleName -> M.Map Model.Name (S.Set Model.Name) -> Model.Type -> t0 -> t1 -> Either Errors.Error Syntax.Type encodeTypeWithClassAssertions namespaces explicitClasses typ cx g =        let classes = Maps.union explicitClasses (getImplicitTypeClasses typ)@@ -488,10 +491,10 @@                   \pair ->                     let name = Pairs.first pair                         cls = Pairs.second pair-                        classLocal = Core.unName cls+                        classLocal = Model.unName cls                         hname =                                 Utils.rawName (Logic.ifElse (Equality.equal classLocal "equality") "Eq" (Logic.ifElse (Equality.equal classLocal "ordering") "Ord" (Formatting.capitalize classLocal)))-                        htype = Syntax.TypeVariable (Utils.rawName (Core.unName name))+                        htype = Syntax.TypeVariable (Utils.rawName (Model.unName name))                     in (Syntax.ConstraintClass (Syntax.ClassConstraint {                       Syntax.classConstraintName = hname,                       Syntax.classConstraintTypes = [@@ -512,50 +515,50 @@           Syntax.constrainedTypeType = htyp}))))))  -- | Encode an unwrap term as a Haskell expression-encodeUnwrap :: Util.ModuleNames Syntax.ModuleName -> Core.Name -> Either t0 Syntax.Expression+encodeUnwrap :: Util.ModuleNames Syntax.ModuleName -> Model.Name -> Either t0 Syntax.Expression encodeUnwrap namespaces name =     Right (Syntax.ExpressionVariable (Utils.elementReference namespaces (Names.qname (Optionals.withDefault (Packaging.ModuleName "") (Names.moduleNameOf name)) (Utils.newtypeAccessorName name))))  -- | Extend metadata by analyzing a term for standard import usage (bottom-up step function)-extendMetaForTerm :: Environment.HaskellModuleMetadata -> Core.Term -> Environment.HaskellModuleMetadata+extendMetaForTerm :: Environment.HaskellModuleMetadata -> Model.Term -> Environment.HaskellModuleMetadata extendMetaForTerm meta term =     case term of-      Core.TermMap _ -> setMetaUsesMap True meta-      Core.TermSet _ -> setMetaUsesSet True meta+      Model.TermMap _ -> setMetaUsesMap True meta+      Model.TermSet _ -> setMetaUsesSet True meta       _ -> meta  -- | Extend metadata by analyzing a type for standard import usage (bottom-up step function)-extendMetaForType :: Environment.HaskellModuleMetadata -> Core.Type -> Environment.HaskellModuleMetadata+extendMetaForType :: Environment.HaskellModuleMetadata -> Model.Type -> Environment.HaskellModuleMetadata extendMetaForType meta typ =     case (Strip.deannotateType typ) of-      Core.TypeLiteral v0 -> case v0 of-        Core.LiteralTypeBinary -> setMetaUsesByteString True meta-        Core.LiteralTypeInteger v1 -> case v1 of-          Core.IntegerTypeInt8 -> setMetaUsesInt True meta-          Core.IntegerTypeInt16 -> setMetaUsesInt True meta-          Core.IntegerTypeInt64 -> setMetaUsesInt True meta+      Model.TypeLiteral v0 -> case v0 of+        Model.LiteralTypeBinary -> setMetaUsesByteString True meta+        Model.LiteralTypeInteger v1 -> case v1 of+          Model.IntegerTypeInt8 -> setMetaUsesInt True meta+          Model.IntegerTypeInt16 -> setMetaUsesInt True meta+          Model.IntegerTypeInt64 -> setMetaUsesInt True meta           _ -> meta         _ -> meta-      Core.TypeMap _ -> setMetaUsesMap True meta-      Core.TypeSet _ -> setMetaUsesSet True meta-      Core.TypeVoid -> setMetaUsesVoid True meta+      Model.TypeMap _ -> setMetaUsesMap True meta+      Model.TypeSet _ -> setMetaUsesSet True meta+      Model.TypeVoid -> setMetaUsesVoid True meta       _ -> meta  -- | Find type variables that require an Ord constraint (used in maps or sets)-findOrdVariables :: Core.Type -> S.Set Core.Name+findOrdVariables :: Model.Type -> S.Set Model.Name findOrdVariables typ =        let fold =               \names -> \typ_ -> case typ_ of-                Core.TypeMap v0 ->-                  let kt = Core.mapTypeKeys v0+                Model.TypeMap v0 ->+                  let kt = Model.mapTypeKeys v0                   in (tryType names kt)-                Core.TypeSet v0 -> tryType names v0+                Model.TypeSet v0 -> tryType names v0                 _ -> names           isTypeVariable = \v -> Optionals.isNone (Names.moduleNameOf v)           tryType =                   \names -> \t -> case (Strip.deannotateType t) of-                    Core.TypeVariable v0 -> Logic.ifElse (isTypeVariable v0) (Sets.insert v0 names) names+                    Model.TypeVariable v0 -> Logic.ifElse (isTypeVariable v0) (Sets.insert v0 names) names                     _ -> names       in (Rewriting.foldOverType Coders.TraversalOrderPre fold Sets.empty typ) @@ -568,18 +571,18 @@                 Packaging.DefinitionTerm v0 ->                   let term = Packaging.termDefinitionBody v0                       metaWithTerm = Rewriting.foldOverTerm Coders.TraversalOrderPre (\m -> \t -> extendMetaForTerm m t) meta term-                  in (Optionals.match (Optionals.map Scoping.termSignatureToTypeScheme (Packaging.termDefinitionSignature v0)) metaWithTerm (\ts -> Rewriting.foldOverType Coders.TraversalOrderPre (\m -> \t -> extendMetaForType m t) metaWithTerm (Core.typeSchemeBody ts)))+                  in (Optionals.match (Optionals.map Scoping.termSignatureToTypeScheme (Packaging.termDefinitionSignature v0)) metaWithTerm (\ts -> Rewriting.foldOverType Coders.TraversalOrderPre (\m -> \t -> extendMetaForType m t) metaWithTerm (Model.typeSchemeBody ts)))                 Packaging.DefinitionType v0 ->-                  let typ = Core.typeSchemeBody (Packaging.typeDefinitionBody v0)+                  let typ = Model.typeSchemeBody (Packaging.typeDefinitionBody v0)                   in (Rewriting.foldOverType Coders.TraversalOrderPre (\m -> \t -> extendMetaForType m t) meta typ)       in (Lists.foldl addDef emptyMetadata defs)  -- | Get implicit typeclass constraints for type variables that need Ord-getImplicitTypeClasses :: Core.Type -> M.Map Core.Name (S.Set Core.Name)+getImplicitTypeClasses :: Model.Type -> M.Map Model.Name (S.Set Model.Name) getImplicitTypeClasses typ =        let toPair = \name -> (name, (Sets.fromList [-            Core.Name "ordering"]))+            Model.Name "ordering"]))       in (Maps.fromList (Lists.map toPair (Sets.toList (findOrdVariables typ))))  -- | Whether to include type definitions in generated Haskell modules@@ -587,8 +590,8 @@ includeTypeDefinitions = False  -- | The key used to track Haskell variable depth in annotations-keyHaskellVar :: Core.Name-keyHaskellVar = Core.Name "haskellVar"+keyHaskellVar :: Model.Name+keyHaskellVar = Model.Name "haskellVar"  -- | Convert a Hydra module to Haskell source code as a filepath-to-content map moduleToHaskell :: S.Set String -> Packaging.Module -> [Packaging.Definition] -> t0 -> Graph.Graph -> Either Errors.Error (M.Map String String)@@ -604,10 +607,10 @@     Eithers.bind (Utils.namespacesForModule mod cx g) (\namespaces -> constructModule overlaySubs namespaces mod defs cx g)  -- | Generate Haskell declarations for type and field name constants-nameDecls :: Util.ModuleNames Syntax.ModuleName -> Core.Name -> Core.Type -> [Syntax.Declaration]+nameDecls :: Util.ModuleNames Syntax.ModuleName -> Model.Name -> Model.Type -> [Syntax.Declaration] nameDecls namespaces name typ = -      let nm = Core.unName name+      let nm = Model.unName name           toDecl =                   \n -> \pair ->                     let k = Pairs.first pair@@ -623,9 +626,9 @@           fieldDecls = Lists.map toConstant (Lexical.fieldsOf typ)           toConstant =                   \fieldType ->-                    let fname = Core.fieldTypeName fieldType-                    in (constantForFieldName name fname, (Core.unName fname))-      in (Logic.ifElse useCoreImport (Lists.cons (toDecl (Core.Name "hydra.core.Name") nameDecl) (Lists.map (toDecl (Core.Name "hydra.core.Name")) fieldDecls)) [])+                    let fname = Model.fieldTypeName fieldType+                    in (constantForFieldName name fname, (Model.unName fname))+      in (Logic.ifElse useCoreImport (Lists.cons (toDecl (Model.Name "hydra.core.model.Name") nameDecl) (Lists.map (toDecl (Model.Name "hydra.core.model.Name")) fieldDecls)) [])  -- | Set the usesByteString flag in Haskell module metadata setMetaUsesByteString :: Bool -> Environment.HaskellModuleMetadata -> Environment.HaskellModuleMetadata@@ -711,12 +714,12 @@                         _ -> vb           toDecl =                   \comments -> \hname_ -> \term_ -> \bindings -> case (Strip.deannotateTerm term_) of-                    Core.TermLet v0 ->-                      let lbindings = Core.letBindings v0-                          env = Core.letBody v0+                    Model.TermLet v0 ->+                      let lbindings = Model.letBindings v0+                          env = Model.letBody v0                           toTermDefinition = \hname_ -> \hterm_ -> Syntax.LocalBindingValue (Utils.simpleValueBinding hname_ hterm_ Nothing)-                          hnames = Lists.map (\binding -> Utils.simpleName (Core.unName (Core.bindingName binding))) lbindings-                          terms = Lists.map Core.bindingTerm lbindings+                          hnames = Lists.map (\binding -> Utils.simpleName (Model.unName (Model.bindingName binding))) lbindings+                          terms = Lists.map Model.bindingTerm lbindings                       in (Eithers.bind (Eithers.mapList (\t -> encodeTerm 0 namespaces t cx g) terms) (\hterms ->                         let hbindings = Lists.zipWith toTermDefinition hnames hterms                             prevBindings = Optionals.match bindings [] (\lb -> Syntax.unLocalBindings lb)@@ -724,11 +727,11 @@                         in (toDecl comments hname_ env (Just (Syntax.LocalBindings allBindings)))))                     _ -> Eithers.bind (encodeTerm 0 namespaces term_ cx g) (\hterm ->                       let vb = Utils.simpleValueBinding hname_ hterm bindings-                          schemeConstraints = Optionals.match typ Maps.empty (\ts -> Core.typeSchemeConstraints ts)+                          schemeConstraints = Optionals.match typ Maps.empty (\ts -> Model.typeSchemeConstraints ts)                           schemeClasses = typeSchemeConstraintsToClassMap schemeConstraints                       in (Eithers.bind (Annotations.getTypeClasses cx g (Strip.removeTypesFromTerm term)) (\explicitClasses ->                         let combinedClasses = Maps.union schemeClasses explicitClasses-                            schemeType = Optionals.match typ Core.TypeUnit (\ts -> Core.typeSchemeBody ts)+                            schemeType = Optionals.match typ Model.TypeUnit (\ts -> Model.typeSchemeBody ts)                         in (Eithers.bind (encodeTypeWithClassAssertions namespaces combinedClasses schemeType cx g) (\htype ->                           let decl =                                   Syntax.DeclarationTypedBinding (Syntax.TypedBinding {@@ -741,7 +744,7 @@       in (Eithers.bind (Annotations.getTermDescription cx g term) (\comments -> toDecl comments hname term Nothing))  -- | Convert a Hydra type definition to Haskell declarations-toTypeDeclarationsFrom :: Util.ModuleNames Syntax.ModuleName -> Core.Name -> Core.Type -> t0 -> Graph.Graph -> Either Errors.Error [Syntax.Declaration]+toTypeDeclarationsFrom :: Util.ModuleNames Syntax.ModuleName -> Model.Name -> Model.Type -> t0 -> Graph.Graph -> Either Errors.Error [Syntax.Declaration] toTypeDeclarationsFrom namespaces elementName typ cx g =        let lname = Names.localNameOf elementName@@ -750,7 +753,7 @@                   \name -> \vars_ -> Optionals.withDefault (Syntax.DeclarationHeadSimple name) (Optionals.map (\p ->                     let h = Pairs.first p                         rest = Pairs.second p-                        hvar = Syntax.Variable (Utils.simpleName (Core.unName h))+                        hvar = Syntax.Variable (Utils.simpleName (Model.unName h))                     in (Syntax.DeclarationHeadApplication (Syntax.ApplicationDeclarationHead {                       Syntax.applicationDeclarationHeadFunction = (declHead name rest),                       Syntax.applicationDeclarationHeadOperand = hvar}))) (Lists.uncons vars_))@@ -773,9 +776,9 @@                   \lname_ -> \fields ->                     let toField =                             \fieldType ->-                              let fname = Core.fieldTypeName fieldType-                                  ftype = Core.fieldTypeType fieldType-                                  hname_ = Utils.simpleName (Strings.concat2 (Formatting.decapitalize lname_) (Formatting.capitalize (Core.unName fname)))+                              let fname = Model.fieldTypeName fieldType+                                  ftype = Model.fieldTypeType fieldType+                                  hname_ = Utils.simpleName (Strings.concat2 (Formatting.decapitalize lname_) (Formatting.capitalize (Model.unName fname)))                               in (Eithers.bind (adaptTypeToHaskellAndEncode namespaces ftype cx g) (\htype -> Eithers.bind (Annotations.getTypeDescription cx g ftype) (\comments -> Right (Syntax.Field {                                 Syntax.fieldName = hname_,                                 Syntax.fieldType = htype,@@ -786,8 +789,8 @@                       Syntax.recordConstructorComments = Nothing}))))           unionCons =                   \boundNames_ -> \lname_ -> \fieldType ->-                    let fname = Core.fieldTypeName fieldType-                        ftype = Core.fieldTypeType fieldType+                    let fname = Model.fieldTypeName fieldType+                        ftype = Model.fieldTypeType fieldType                         deconflict =                                 \name ->                                   let tname =@@ -796,8 +799,8 @@                                             Util.qualifiedNameLocal = name})                                   in (Logic.ifElse (Sets.member tname boundNames_) (deconflict (Strings.concat2 name "_")) name)                     in (Eithers.bind (Annotations.getTypeDescription cx g ftype) (\comments ->-                      let nm = deconflict (Strings.concat2 (Formatting.capitalize lname_) (Formatting.capitalize (Core.unName fname)))-                      in (Eithers.bind (Logic.ifElse (Equality.equal (Strip.deannotateType ftype) Core.TypeUnit) (Right []) (Eithers.bind (adaptTypeToHaskellAndEncode namespaces ftype cx g) (\htype -> Right [+                      let nm = deconflict (Strings.concat2 (Formatting.capitalize lname_) (Formatting.capitalize (Model.unName fname)))+                      in (Eithers.bind (Logic.ifElse (Equality.equal (Strip.deannotateType ftype) Model.TypeUnit) (Right []) (Eithers.bind (adaptTypeToHaskellAndEncode namespaces ftype cx g) (\htype -> Right [                         htype]))) (\typeList -> Right (Syntax.ConstructorOrdinary (Syntax.PositionalConstructor {                         Syntax.positionalConstructorName = (Utils.simpleName nm),                         Syntax.positionalConstructorFields = typeList,@@ -814,7 +817,7 @@             t_ = Pairs.second unpackResult             hd = declHead hname (Lists.reverse vars)         in (Eithers.bind (Annotations.getTypeDescription cx g typ) (\comments -> Eithers.bind (case (Strip.deannotateType t_) of-          Core.TypeRecord v0 -> Eithers.bind (recordCons lname v0) (\cons -> Right (Syntax.DeclarationData (Syntax.DataDeclaration {+          Model.TypeRecord v0 -> Eithers.bind (recordCons lname v0) (\cons -> Right (Syntax.DeclarationData (Syntax.DataDeclaration {             Syntax.dataDeclarationKeyword = Syntax.DataKeywordData,             Syntax.dataDeclarationContext = [],             Syntax.dataDeclarationHead = hd,@@ -823,7 +826,7 @@             Syntax.dataDeclarationDeriving = [               deriv],             Syntax.dataDeclarationComments = comments})))-          Core.TypeUnion v0 -> Eithers.bind (Eithers.mapList (unionCons (Sets.fromList (Maps.keys (Graph.graphBoundTerms g))) lname) v0) (\cons -> Right (Syntax.DeclarationData (Syntax.DataDeclaration {+          Model.TypeUnion v0 -> Eithers.bind (Eithers.mapList (unionCons (Sets.fromList (Maps.keys (Graph.graphBoundTerms g))) lname) v0) (\cons -> Right (Syntax.DeclarationData (Syntax.DataDeclaration {             Syntax.dataDeclarationKeyword = Syntax.DataKeywordData,             Syntax.dataDeclarationContext = [],             Syntax.dataDeclarationHead = hd,@@ -831,7 +834,7 @@             Syntax.dataDeclarationDeriving = [               deriv],             Syntax.dataDeclarationComments = comments})))-          Core.TypeWrap v0 -> Eithers.bind (newtypeCons elementName v0) (\cons -> Right (Syntax.DeclarationData (Syntax.DataDeclaration {+          Model.TypeWrap v0 -> Eithers.bind (newtypeCons elementName v0) (\cons -> Right (Syntax.DeclarationData (Syntax.DataDeclaration {             Syntax.dataDeclarationKeyword = Syntax.DataKeywordNewtype,             Syntax.dataDeclarationContext = [],             Syntax.dataDeclarationHead = hd,@@ -853,7 +856,7 @@             tdecls]))))))))  -- | Generate a Haskell declaration for a type definition constant-typeDecl :: Util.ModuleNames Syntax.ModuleName -> Core.Name -> Core.Type -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Declaration+typeDecl :: Util.ModuleNames Syntax.ModuleName -> Model.Name -> Model.Type -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Declaration typeDecl namespaces name typ cx g =        let typeName = \ns -> \name_ -> Names.qname ns (typeNameLocal name_)@@ -862,34 +865,34 @@                     "_",                     (Names.localNameOf name_),                     "_type_"]-          rawTerm = EncodeCore.type_ typ+          rawTerm = EncodeModel.type_ typ           rewrite =                   \recurse -> \term ->                     let variantResult =                             case (Strip.deannotateTerm term) of-                              Core.TermInject v0 -> Logic.ifElse (Equality.equal (Core.injectionTypeName v0) (Core.Name "hydra.core.Type")) (Just (Core.injectionField v0)) Nothing+                              Model.TermInject v0 -> Logic.ifElse (Equality.equal (Model.injectionTypeName v0) (Model.Name "hydra.core.model.Type")) (Just (Model.injectionField v0)) Nothing                               _ -> Nothing                         decodeString =                                 \term2 -> case (Strip.deannotateTerm term2) of-                                  Core.TermLiteral v0 -> case v0 of-                                    Core.LiteralString v1 -> Just v1+                                  Model.TermLiteral v0 -> case v0 of+                                    Model.LiteralString v1 -> Just v1                                     _ -> Nothing                                   _ -> Nothing                         decodeName =                                 \term2 -> case (Strip.deannotateTerm term2) of-                                  Core.TermWrap v0 -> Logic.ifElse (Equality.equal (Core.wrappedTermTypeName v0) (Core.Name "hydra.core.Name")) (Optionals.map (\x -> Core.Name x) (decodeString (Core.wrappedTermBody v0))) Nothing+                                  Model.TermWrap v0 -> Logic.ifElse (Equality.equal (Model.wrappedTermTypeName v0) (Model.Name "hydra.core.model.Name")) (Optionals.map (\x -> Model.Name x) (decodeString (Model.wrappedTermBody v0))) Nothing                                   _ -> Nothing                         forType =                                 \field ->-                                  let fname = Core.fieldName field-                                      fterm = Core.fieldTerm field-                                  in (Logic.ifElse (Equality.equal fname (Core.Name "record")) Nothing (Logic.ifElse (Equality.equal fname (Core.Name "variable")) (Optionals.bind (decodeName fterm) forVariableType) Nothing))+                                  let fname = Model.fieldName field+                                      fterm = Model.fieldTerm field+                                  in (Logic.ifElse (Equality.equal fname (Model.Name "record")) Nothing (Logic.ifElse (Equality.equal fname (Model.Name "variable")) (Optionals.bind (decodeName fterm) forVariableType) Nothing))                         forVariableType =                                 \vname ->                                   let qname = Names.qualifyName vname                                       mns = Util.qualifiedNameModuleName qname                                       local = Util.qualifiedNameLocal qname-                                  in (Optionals.map (\ns -> Core.TermVariable (Names.qname ns (Strings.concat [+                                  in (Optionals.map (\ns -> Model.TermVariable (Names.qname ns (Strings.concat [                                     "_",                                     local,                                     "_type_"]))) mns)@@ -908,13 +911,13 @@         in (Right decl)))  -- | Project type scheme constraints to a map of type variables to typeclass names-typeSchemeConstraintsToClassMap :: Ord t0 => (M.Map t0 Core.TypeVariableConstraints -> M.Map t0 (S.Set Core.Name))+typeSchemeConstraintsToClassMap :: Ord t0 => (M.Map t0 Model.TypeVariableConstraints -> M.Map t0 (S.Set Model.Name)) typeSchemeConstraintsToClassMap constraints =        let constraintToName =               \tcc -> case tcc of-                Core.TypeClassConstraintSimple v0 -> Just v0-      in (Maps.map (\meta -> Sets.fromList (Optionals.givens (Lists.map constraintToName (Sets.toList (Core.typeVariableConstraintsClasses meta))))) constraints)+                Model.TypeClassConstraintSimple v0 -> Just v0+      in (Maps.map (\meta -> Sets.fromList (Optionals.givens (Lists.map constraintToName (Sets.toList (Model.typeVariableConstraintsClasses meta))))) constraints)  -- | Whether to use the Hydra core import in generated modules useCoreImport :: Bool
+ src/main/haskell/Hydra/Haskell/Dsl/Environment.hs view
@@ -0,0 +1,274 @@+-- Note: this is an automatically generated file. Do not edit.++-- | DSL functions for hydra.haskell.environment++module Hydra.Haskell.Dsl.Environment where++import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Haskell.Environment as Environment+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)+import qualified Data.Scientific as Sci+import Data.Void++-- | DSL constructor for hydra.haskell.environment.HaskellModuleMetadata+haskellModuleMetadata :: Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.HaskellModuleMetadata+haskellModuleMetadata usesByteString usesInt usesMap usesSet usesVoid =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "usesByteString"),+          Model.fieldTerm = (Typed.unTypedTerm usesByteString)},+        Model.Field {+          Model.fieldName = (Model.Name "usesInt"),+          Model.fieldTerm = (Typed.unTypedTerm usesInt)},+        Model.Field {+          Model.fieldName = (Model.Name "usesMap"),+          Model.fieldTerm = (Typed.unTypedTerm usesMap)},+        Model.Field {+          Model.fieldName = (Model.Name "usesSet"),+          Model.fieldTerm = (Typed.unTypedTerm usesSet)},+        Model.Field {+          Model.fieldName = (Model.Name "usesVoid"),+          Model.fieldTerm = (Typed.unTypedTerm usesVoid)}]}))++-- | DSL name token for hydra.haskell.environment.HaskellModuleMetadata+haskellModuleMetadataHaskellModuleMetadata :: Typed.TypedName Environment.HaskellModuleMetadata+haskellModuleMetadataHaskellModuleMetadata =+    Typed.TypedName (Model.Name "hydra.haskell.environment.HaskellModuleMetadata")++-- | DSL accessor for the usesByteString field of hydra.haskell.environment.HaskellModuleMetadata+haskellModuleMetadataUsesByteString :: Typed.TypedTerm Environment.HaskellModuleMetadata -> Typed.TypedTerm Bool+haskellModuleMetadataUsesByteString x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+        Model.projectionFieldName = (Model.Name "usesByteString")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the usesInt field of hydra.haskell.environment.HaskellModuleMetadata+haskellModuleMetadataUsesInt :: Typed.TypedTerm Environment.HaskellModuleMetadata -> Typed.TypedTerm Bool+haskellModuleMetadataUsesInt x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+        Model.projectionFieldName = (Model.Name "usesInt")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the usesMap field of hydra.haskell.environment.HaskellModuleMetadata+haskellModuleMetadataUsesMap :: Typed.TypedTerm Environment.HaskellModuleMetadata -> Typed.TypedTerm Bool+haskellModuleMetadataUsesMap x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+        Model.projectionFieldName = (Model.Name "usesMap")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the usesSet field of hydra.haskell.environment.HaskellModuleMetadata+haskellModuleMetadataUsesSet :: Typed.TypedTerm Environment.HaskellModuleMetadata -> Typed.TypedTerm Bool+haskellModuleMetadataUsesSet x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+        Model.projectionFieldName = (Model.Name "usesSet")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the usesVoid field of hydra.haskell.environment.HaskellModuleMetadata+haskellModuleMetadataUsesVoid :: Typed.TypedTerm Environment.HaskellModuleMetadata -> Typed.TypedTerm Bool+haskellModuleMetadataUsesVoid x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+        Model.projectionFieldName = (Model.Name "usesVoid")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the usesByteString field of hydra.haskell.environment.HaskellModuleMetadata+haskellModuleMetadataWithUsesByteString :: Typed.TypedTerm Environment.HaskellModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.HaskellModuleMetadata+haskellModuleMetadataWithUsesByteString original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "usesByteString"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "usesInt"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+              Model.projectionFieldName = (Model.Name "usesInt")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "usesMap"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+              Model.projectionFieldName = (Model.Name "usesMap")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "usesSet"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+              Model.projectionFieldName = (Model.Name "usesSet")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "usesVoid"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+              Model.projectionFieldName = (Model.Name "usesVoid")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the usesInt field of hydra.haskell.environment.HaskellModuleMetadata+haskellModuleMetadataWithUsesInt :: Typed.TypedTerm Environment.HaskellModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.HaskellModuleMetadata+haskellModuleMetadataWithUsesInt original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "usesByteString"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+              Model.projectionFieldName = (Model.Name "usesByteString")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "usesInt"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "usesMap"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+              Model.projectionFieldName = (Model.Name "usesMap")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "usesSet"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+              Model.projectionFieldName = (Model.Name "usesSet")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "usesVoid"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+              Model.projectionFieldName = (Model.Name "usesVoid")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the usesMap field of hydra.haskell.environment.HaskellModuleMetadata+haskellModuleMetadataWithUsesMap :: Typed.TypedTerm Environment.HaskellModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.HaskellModuleMetadata+haskellModuleMetadataWithUsesMap original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "usesByteString"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+              Model.projectionFieldName = (Model.Name "usesByteString")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "usesInt"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+              Model.projectionFieldName = (Model.Name "usesInt")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "usesMap"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "usesSet"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+              Model.projectionFieldName = (Model.Name "usesSet")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "usesVoid"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+              Model.projectionFieldName = (Model.Name "usesVoid")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the usesSet field of hydra.haskell.environment.HaskellModuleMetadata+haskellModuleMetadataWithUsesSet :: Typed.TypedTerm Environment.HaskellModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.HaskellModuleMetadata+haskellModuleMetadataWithUsesSet original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "usesByteString"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+              Model.projectionFieldName = (Model.Name "usesByteString")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "usesInt"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+              Model.projectionFieldName = (Model.Name "usesInt")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "usesMap"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+              Model.projectionFieldName = (Model.Name "usesMap")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "usesSet"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "usesVoid"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+              Model.projectionFieldName = (Model.Name "usesVoid")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the usesVoid field of hydra.haskell.environment.HaskellModuleMetadata+haskellModuleMetadataWithUsesVoid :: Typed.TypedTerm Environment.HaskellModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.HaskellModuleMetadata+haskellModuleMetadataWithUsesVoid original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "usesByteString"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+              Model.projectionFieldName = (Model.Name "usesByteString")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "usesInt"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+              Model.projectionFieldName = (Model.Name "usesInt")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "usesMap"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+              Model.projectionFieldName = (Model.Name "usesMap")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "usesSet"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.environment.HaskellModuleMetadata"),+              Model.projectionFieldName = (Model.Name "usesSet")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "usesVoid"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+ src/main/haskell/Hydra/Haskell/Dsl/Syntax.hs view
@@ -0,0 +1,4407 @@+-- Note: this is an automatically generated file. Do not edit.++-- | DSL functions for hydra.haskell.syntax++module Hydra.Haskell.Dsl.Syntax where++import qualified Hydra.Core.Dsl.Model as DslModel+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Haskell.Syntax as Syntax+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)+import qualified Data.Scientific as Sci+import Data.Void++-- | DSL constructor for hydra.haskell.syntax.Alternative+alternative :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.CaseRhs -> Typed.TypedTerm (Maybe Syntax.LocalBindings) -> Typed.TypedTerm Syntax.Alternative+alternative pattern rhs binds =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.Alternative"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "pattern"),+          Model.fieldTerm = (Typed.unTypedTerm pattern)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm rhs)},+        Model.Field {+          Model.fieldName = (Model.Name "binds"),+          Model.fieldTerm = (Typed.unTypedTerm binds)}]}))++-- | DSL name token for hydra.haskell.syntax.Alternative+alternativeAlternative :: Typed.TypedName Syntax.Alternative+alternativeAlternative = Typed.TypedName (Model.Name "hydra.haskell.syntax.Alternative")++-- | DSL accessor for the binds field of hydra.haskell.syntax.Alternative+alternativeBinds :: Typed.TypedTerm Syntax.Alternative -> Typed.TypedTerm (Maybe Syntax.LocalBindings)+alternativeBinds x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Alternative"),+        Model.projectionFieldName = (Model.Name "binds")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the pattern field of hydra.haskell.syntax.Alternative+alternativePattern :: Typed.TypedTerm Syntax.Alternative -> Typed.TypedTerm Syntax.Pattern+alternativePattern x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Alternative"),+        Model.projectionFieldName = (Model.Name "pattern")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the rhs field of hydra.haskell.syntax.Alternative+alternativeRhs :: Typed.TypedTerm Syntax.Alternative -> Typed.TypedTerm Syntax.CaseRhs+alternativeRhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Alternative"),+        Model.projectionFieldName = (Model.Name "rhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the binds field of hydra.haskell.syntax.Alternative+alternativeWithBinds :: Typed.TypedTerm Syntax.Alternative -> Typed.TypedTerm (Maybe Syntax.LocalBindings) -> Typed.TypedTerm Syntax.Alternative+alternativeWithBinds original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.Alternative"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "pattern"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Alternative"),+              Model.projectionFieldName = (Model.Name "pattern")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Alternative"),+              Model.projectionFieldName = (Model.Name "rhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "binds"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the pattern field of hydra.haskell.syntax.Alternative+alternativeWithPattern :: Typed.TypedTerm Syntax.Alternative -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.Alternative+alternativeWithPattern original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.Alternative"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "pattern"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Alternative"),+              Model.projectionFieldName = (Model.Name "rhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "binds"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Alternative"),+              Model.projectionFieldName = (Model.Name "binds")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the rhs field of hydra.haskell.syntax.Alternative+alternativeWithRhs :: Typed.TypedTerm Syntax.Alternative -> Typed.TypedTerm Syntax.CaseRhs -> Typed.TypedTerm Syntax.Alternative+alternativeWithRhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.Alternative"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "pattern"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Alternative"),+              Model.projectionFieldName = (Model.Name "pattern")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "binds"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Alternative"),+              Model.projectionFieldName = (Model.Name "binds")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.haskell.syntax.ApplicationDeclarationHead+applicationDeclarationHead :: Typed.TypedTerm Syntax.DeclarationHead -> Typed.TypedTerm Syntax.Variable -> Typed.TypedTerm Syntax.ApplicationDeclarationHead+applicationDeclarationHead function operand =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.ApplicationDeclarationHead"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "function"),+          Model.fieldTerm = (Typed.unTypedTerm function)},+        Model.Field {+          Model.fieldName = (Model.Name "operand"),+          Model.fieldTerm = (Typed.unTypedTerm operand)}]}))++-- | DSL name token for hydra.haskell.syntax.ApplicationDeclarationHead+applicationDeclarationHeadApplicationDeclarationHead :: Typed.TypedName Syntax.ApplicationDeclarationHead+applicationDeclarationHeadApplicationDeclarationHead =+    Typed.TypedName (Model.Name "hydra.haskell.syntax.ApplicationDeclarationHead")++-- | DSL accessor for the function field of hydra.haskell.syntax.ApplicationDeclarationHead+applicationDeclarationHeadFunction :: Typed.TypedTerm Syntax.ApplicationDeclarationHead -> Typed.TypedTerm Syntax.DeclarationHead+applicationDeclarationHeadFunction x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ApplicationDeclarationHead"),+        Model.projectionFieldName = (Model.Name "function")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the operand field of hydra.haskell.syntax.ApplicationDeclarationHead+applicationDeclarationHeadOperand :: Typed.TypedTerm Syntax.ApplicationDeclarationHead -> Typed.TypedTerm Syntax.Variable+applicationDeclarationHeadOperand x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ApplicationDeclarationHead"),+        Model.projectionFieldName = (Model.Name "operand")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the function field of hydra.haskell.syntax.ApplicationDeclarationHead+applicationDeclarationHeadWithFunction :: Typed.TypedTerm Syntax.ApplicationDeclarationHead -> Typed.TypedTerm Syntax.DeclarationHead -> Typed.TypedTerm Syntax.ApplicationDeclarationHead+applicationDeclarationHeadWithFunction original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.ApplicationDeclarationHead"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "function"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "operand"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ApplicationDeclarationHead"),+              Model.projectionFieldName = (Model.Name "operand")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the operand field of hydra.haskell.syntax.ApplicationDeclarationHead+applicationDeclarationHeadWithOperand :: Typed.TypedTerm Syntax.ApplicationDeclarationHead -> Typed.TypedTerm Syntax.Variable -> Typed.TypedTerm Syntax.ApplicationDeclarationHead+applicationDeclarationHeadWithOperand original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.ApplicationDeclarationHead"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "function"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ApplicationDeclarationHead"),+              Model.projectionFieldName = (Model.Name "function")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "operand"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.haskell.syntax.ApplicationExpression+applicationExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ApplicationExpression+applicationExpression function argument =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.ApplicationExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "function"),+          Model.fieldTerm = (Typed.unTypedTerm function)},+        Model.Field {+          Model.fieldName = (Model.Name "argument"),+          Model.fieldTerm = (Typed.unTypedTerm argument)}]}))++-- | DSL name token for hydra.haskell.syntax.ApplicationExpression+applicationExpressionApplicationExpression :: Typed.TypedName Syntax.ApplicationExpression+applicationExpressionApplicationExpression = Typed.TypedName (Model.Name "hydra.haskell.syntax.ApplicationExpression")++-- | DSL accessor for the argument field of hydra.haskell.syntax.ApplicationExpression+applicationExpressionArgument :: Typed.TypedTerm Syntax.ApplicationExpression -> Typed.TypedTerm Syntax.Expression+applicationExpressionArgument x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ApplicationExpression"),+        Model.projectionFieldName = (Model.Name "argument")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the function field of hydra.haskell.syntax.ApplicationExpression+applicationExpressionFunction :: Typed.TypedTerm Syntax.ApplicationExpression -> Typed.TypedTerm Syntax.Expression+applicationExpressionFunction x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ApplicationExpression"),+        Model.projectionFieldName = (Model.Name "function")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the argument field of hydra.haskell.syntax.ApplicationExpression+applicationExpressionWithArgument :: Typed.TypedTerm Syntax.ApplicationExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ApplicationExpression+applicationExpressionWithArgument original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.ApplicationExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "function"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ApplicationExpression"),+              Model.projectionFieldName = (Model.Name "function")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "argument"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the function field of hydra.haskell.syntax.ApplicationExpression+applicationExpressionWithFunction :: Typed.TypedTerm Syntax.ApplicationExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ApplicationExpression+applicationExpressionWithFunction original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.ApplicationExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "function"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "argument"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ApplicationExpression"),+              Model.projectionFieldName = (Model.Name "argument")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.haskell.syntax.ApplicationPattern+applicationPattern :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.ApplicationPattern+applicationPattern name args =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.ApplicationPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "args"),+          Model.fieldTerm = (Typed.unTypedTerm args)}]}))++-- | DSL name token for hydra.haskell.syntax.ApplicationPattern+applicationPatternApplicationPattern :: Typed.TypedName Syntax.ApplicationPattern+applicationPatternApplicationPattern = Typed.TypedName (Model.Name "hydra.haskell.syntax.ApplicationPattern")++-- | DSL accessor for the args field of hydra.haskell.syntax.ApplicationPattern+applicationPatternArgs :: Typed.TypedTerm Syntax.ApplicationPattern -> Typed.TypedTerm [Syntax.Pattern]+applicationPatternArgs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ApplicationPattern"),+        Model.projectionFieldName = (Model.Name "args")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the name field of hydra.haskell.syntax.ApplicationPattern+applicationPatternName :: Typed.TypedTerm Syntax.ApplicationPattern -> Typed.TypedTerm Syntax.Name+applicationPatternName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ApplicationPattern"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the args field of hydra.haskell.syntax.ApplicationPattern+applicationPatternWithArgs :: Typed.TypedTerm Syntax.ApplicationPattern -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.ApplicationPattern+applicationPatternWithArgs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.ApplicationPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ApplicationPattern"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "args"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the name field of hydra.haskell.syntax.ApplicationPattern+applicationPatternWithName :: Typed.TypedTerm Syntax.ApplicationPattern -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ApplicationPattern+applicationPatternWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.ApplicationPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "args"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ApplicationPattern"),+              Model.projectionFieldName = (Model.Name "args")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.haskell.syntax.ApplicationType+applicationType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ApplicationType+applicationType context argument =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.ApplicationType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "context"),+          Model.fieldTerm = (Typed.unTypedTerm context)},+        Model.Field {+          Model.fieldName = (Model.Name "argument"),+          Model.fieldTerm = (Typed.unTypedTerm argument)}]}))++-- | DSL name token for hydra.haskell.syntax.ApplicationType+applicationTypeApplicationType :: Typed.TypedName Syntax.ApplicationType+applicationTypeApplicationType = Typed.TypedName (Model.Name "hydra.haskell.syntax.ApplicationType")++-- | DSL accessor for the argument field of hydra.haskell.syntax.ApplicationType+applicationTypeArgument :: Typed.TypedTerm Syntax.ApplicationType -> Typed.TypedTerm Syntax.Type+applicationTypeArgument x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ApplicationType"),+        Model.projectionFieldName = (Model.Name "argument")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the context field of hydra.haskell.syntax.ApplicationType+applicationTypeContext :: Typed.TypedTerm Syntax.ApplicationType -> Typed.TypedTerm Syntax.Type+applicationTypeContext x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ApplicationType"),+        Model.projectionFieldName = (Model.Name "context")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the argument field of hydra.haskell.syntax.ApplicationType+applicationTypeWithArgument :: Typed.TypedTerm Syntax.ApplicationType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ApplicationType+applicationTypeWithArgument original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.ApplicationType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "context"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ApplicationType"),+              Model.projectionFieldName = (Model.Name "context")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "argument"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the context field of hydra.haskell.syntax.ApplicationType+applicationTypeWithContext :: Typed.TypedTerm Syntax.ApplicationType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ApplicationType+applicationTypeWithContext original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.ApplicationType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "context"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "argument"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ApplicationType"),+              Model.projectionFieldName = (Model.Name "argument")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.haskell.syntax.AsPattern+asPattern :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.AsPattern+asPattern name inner =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.AsPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "inner"),+          Model.fieldTerm = (Typed.unTypedTerm inner)}]}))++-- | DSL name token for hydra.haskell.syntax.AsPattern+asPatternAsPattern :: Typed.TypedName Syntax.AsPattern+asPatternAsPattern = Typed.TypedName (Model.Name "hydra.haskell.syntax.AsPattern")++-- | DSL accessor for the inner field of hydra.haskell.syntax.AsPattern+asPatternInner :: Typed.TypedTerm Syntax.AsPattern -> Typed.TypedTerm Syntax.Pattern+asPatternInner x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.AsPattern"),+        Model.projectionFieldName = (Model.Name "inner")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the name field of hydra.haskell.syntax.AsPattern+asPatternName :: Typed.TypedTerm Syntax.AsPattern -> Typed.TypedTerm Syntax.Name+asPatternName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.AsPattern"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the inner field of hydra.haskell.syntax.AsPattern+asPatternWithInner :: Typed.TypedTerm Syntax.AsPattern -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.AsPattern+asPatternWithInner original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.AsPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.AsPattern"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inner"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the name field of hydra.haskell.syntax.AsPattern+asPatternWithName :: Typed.TypedTerm Syntax.AsPattern -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.AsPattern+asPatternWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.AsPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "inner"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.AsPattern"),+              Model.projectionFieldName = (Model.Name "inner")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.haskell.syntax.CaseExpression+caseExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm [Syntax.Alternative] -> Typed.TypedTerm Syntax.CaseExpression+caseExpression case_ alternatives =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.CaseExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "case"),+          Model.fieldTerm = (Typed.unTypedTerm case_)},+        Model.Field {+          Model.fieldName = (Model.Name "alternatives"),+          Model.fieldTerm = (Typed.unTypedTerm alternatives)}]}))++-- | DSL accessor for the alternatives field of hydra.haskell.syntax.CaseExpression+caseExpressionAlternatives :: Typed.TypedTerm Syntax.CaseExpression -> Typed.TypedTerm [Syntax.Alternative]+caseExpressionAlternatives x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.CaseExpression"),+        Model.projectionFieldName = (Model.Name "alternatives")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the case field of hydra.haskell.syntax.CaseExpression+caseExpressionCase :: Typed.TypedTerm Syntax.CaseExpression -> Typed.TypedTerm Syntax.Expression+caseExpressionCase x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.CaseExpression"),+        Model.projectionFieldName = (Model.Name "case")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.CaseExpression+caseExpressionCaseExpression :: Typed.TypedName Syntax.CaseExpression+caseExpressionCaseExpression = Typed.TypedName (Model.Name "hydra.haskell.syntax.CaseExpression")++-- | DSL updater for the alternatives field of hydra.haskell.syntax.CaseExpression+caseExpressionWithAlternatives :: Typed.TypedTerm Syntax.CaseExpression -> Typed.TypedTerm [Syntax.Alternative] -> Typed.TypedTerm Syntax.CaseExpression+caseExpressionWithAlternatives original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.CaseExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "case"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.CaseExpression"),+              Model.projectionFieldName = (Model.Name "case")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "alternatives"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the case field of hydra.haskell.syntax.CaseExpression+caseExpressionWithCase :: Typed.TypedTerm Syntax.CaseExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.CaseExpression+caseExpressionWithCase original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.CaseExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "case"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "alternatives"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.CaseExpression"),+              Model.projectionFieldName = (Model.Name "alternatives")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.haskell.syntax.CaseRhs wrapper+caseRhs :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.CaseRhs+caseRhs x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.haskell.syntax.CaseRhs"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.CaseRhs+caseRhsCaseRhs :: Typed.TypedName Syntax.CaseRhs+caseRhsCaseRhs = Typed.TypedName (Model.Name "hydra.haskell.syntax.CaseRhs")++-- | DSL constructor for hydra.haskell.syntax.ClassConstraint+classConstraint :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.ClassConstraint+classConstraint name types =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.ClassConstraint"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "types"),+          Model.fieldTerm = (Typed.unTypedTerm types)}]}))++-- | DSL name token for hydra.haskell.syntax.ClassConstraint+classConstraintClassConstraint :: Typed.TypedName Syntax.ClassConstraint+classConstraintClassConstraint = Typed.TypedName (Model.Name "hydra.haskell.syntax.ClassConstraint")++-- | DSL accessor for the name field of hydra.haskell.syntax.ClassConstraint+classConstraintName :: Typed.TypedTerm Syntax.ClassConstraint -> Typed.TypedTerm Syntax.Name+classConstraintName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ClassConstraint"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the types field of hydra.haskell.syntax.ClassConstraint+classConstraintTypes :: Typed.TypedTerm Syntax.ClassConstraint -> Typed.TypedTerm [Syntax.Type]+classConstraintTypes x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ClassConstraint"),+        Model.projectionFieldName = (Model.Name "types")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the name field of hydra.haskell.syntax.ClassConstraint+classConstraintWithName :: Typed.TypedTerm Syntax.ClassConstraint -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ClassConstraint+classConstraintWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.ClassConstraint"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "types"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ClassConstraint"),+              Model.projectionFieldName = (Model.Name "types")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the types field of hydra.haskell.syntax.ClassConstraint+classConstraintWithTypes :: Typed.TypedTerm Syntax.ClassConstraint -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.ClassConstraint+classConstraintWithTypes original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.ClassConstraint"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ClassConstraint"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "types"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.haskell.syntax.ConstrainedType+constrainedType :: Typed.TypedTerm Syntax.Constraint -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ConstrainedType+constrainedType ctx type_ =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.ConstrainedType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "ctx"),+          Model.fieldTerm = (Typed.unTypedTerm ctx)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)}]}))++-- | DSL name token for hydra.haskell.syntax.ConstrainedType+constrainedTypeConstrainedType :: Typed.TypedName Syntax.ConstrainedType+constrainedTypeConstrainedType = Typed.TypedName (Model.Name "hydra.haskell.syntax.ConstrainedType")++-- | DSL accessor for the ctx field of hydra.haskell.syntax.ConstrainedType+constrainedTypeCtx :: Typed.TypedTerm Syntax.ConstrainedType -> Typed.TypedTerm Syntax.Constraint+constrainedTypeCtx x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ConstrainedType"),+        Model.projectionFieldName = (Model.Name "ctx")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.haskell.syntax.ConstrainedType+constrainedTypeType :: Typed.TypedTerm Syntax.ConstrainedType -> Typed.TypedTerm Syntax.Type+constrainedTypeType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ConstrainedType"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the ctx field of hydra.haskell.syntax.ConstrainedType+constrainedTypeWithCtx :: Typed.TypedTerm Syntax.ConstrainedType -> Typed.TypedTerm Syntax.Constraint -> Typed.TypedTerm Syntax.ConstrainedType+constrainedTypeWithCtx original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.ConstrainedType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "ctx"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ConstrainedType"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.haskell.syntax.ConstrainedType+constrainedTypeWithType :: Typed.TypedTerm Syntax.ConstrainedType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ConstrainedType+constrainedTypeWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.ConstrainedType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "ctx"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ConstrainedType"),+              Model.projectionFieldName = (Model.Name "ctx")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the class variant of hydra.haskell.syntax.Constraint+constraintClass :: Typed.TypedTerm Syntax.ClassConstraint -> Typed.TypedTerm Syntax.Constraint+constraintClass x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Constraint"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "class"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.haskell.syntax.Constraint+constraintConstraint :: Typed.TypedName Syntax.Constraint+constraintConstraint = Typed.TypedName (Model.Name "hydra.haskell.syntax.Constraint")++-- | DSL injection for the tuple variant of hydra.haskell.syntax.Constraint+constraintTuple :: Typed.TypedTerm [Syntax.Constraint] -> Typed.TypedTerm Syntax.Constraint+constraintTuple x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Constraint"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "tuple"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.haskell.syntax.Constructor+constructorConstructor :: Typed.TypedName Syntax.Constructor+constructorConstructor = Typed.TypedName (Model.Name "hydra.haskell.syntax.Constructor")++-- | DSL injection for the ordinary variant of hydra.haskell.syntax.Constructor+constructorOrdinary :: Typed.TypedTerm Syntax.PositionalConstructor -> Typed.TypedTerm Syntax.Constructor+constructorOrdinary x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Constructor"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "ordinary"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the record variant of hydra.haskell.syntax.Constructor+constructorRecord :: Typed.TypedTerm Syntax.RecordConstructor -> Typed.TypedTerm Syntax.Constructor+constructorRecord x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Constructor"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "record"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.haskell.syntax.DataDeclaration+dataDeclaration :: Typed.TypedTerm Syntax.DataKeyword -> Typed.TypedTerm [Syntax.Constraint] -> Typed.TypedTerm Syntax.DeclarationHead -> Typed.TypedTerm [Syntax.Constructor] -> Typed.TypedTerm [Syntax.DerivingClause] -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.DataDeclaration+dataDeclaration keyword context head constructors deriving_ comments =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "keyword"),+          Model.fieldTerm = (Typed.unTypedTerm keyword)},+        Model.Field {+          Model.fieldName = (Model.Name "context"),+          Model.fieldTerm = (Typed.unTypedTerm context)},+        Model.Field {+          Model.fieldName = (Model.Name "head"),+          Model.fieldTerm = (Typed.unTypedTerm head)},+        Model.Field {+          Model.fieldName = (Model.Name "constructors"),+          Model.fieldTerm = (Typed.unTypedTerm constructors)},+        Model.Field {+          Model.fieldName = (Model.Name "deriving"),+          Model.fieldTerm = (Typed.unTypedTerm deriving_)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm comments)}]}))++-- | DSL accessor for the comments field of hydra.haskell.syntax.DataDeclaration+dataDeclarationComments :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm (Maybe String)+dataDeclarationComments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+        Model.projectionFieldName = (Model.Name "comments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the constructors field of hydra.haskell.syntax.DataDeclaration+dataDeclarationConstructors :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm [Syntax.Constructor]+dataDeclarationConstructors x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+        Model.projectionFieldName = (Model.Name "constructors")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the context field of hydra.haskell.syntax.DataDeclaration+dataDeclarationContext :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm [Syntax.Constraint]+dataDeclarationContext x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+        Model.projectionFieldName = (Model.Name "context")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.DataDeclaration+dataDeclarationDataDeclaration :: Typed.TypedName Syntax.DataDeclaration+dataDeclarationDataDeclaration = Typed.TypedName (Model.Name "hydra.haskell.syntax.DataDeclaration")++-- | DSL accessor for the deriving field of hydra.haskell.syntax.DataDeclaration+dataDeclarationDeriving :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm [Syntax.DerivingClause]+dataDeclarationDeriving x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+        Model.projectionFieldName = (Model.Name "deriving")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the head field of hydra.haskell.syntax.DataDeclaration+dataDeclarationHead :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm Syntax.DeclarationHead+dataDeclarationHead x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+        Model.projectionFieldName = (Model.Name "head")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the keyword field of hydra.haskell.syntax.DataDeclaration+dataDeclarationKeyword :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm Syntax.DataKeyword+dataDeclarationKeyword x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+        Model.projectionFieldName = (Model.Name "keyword")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the comments field of hydra.haskell.syntax.DataDeclaration+dataDeclarationWithComments :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.DataDeclaration+dataDeclarationWithComments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "keyword"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "keyword")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "context"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "context")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "head"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "head")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "constructors"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "constructors")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "deriving"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "deriving")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the constructors field of hydra.haskell.syntax.DataDeclaration+dataDeclarationWithConstructors :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm [Syntax.Constructor] -> Typed.TypedTerm Syntax.DataDeclaration+dataDeclarationWithConstructors original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "keyword"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "keyword")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "context"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "context")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "head"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "head")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "constructors"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "deriving"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "deriving")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the context field of hydra.haskell.syntax.DataDeclaration+dataDeclarationWithContext :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm [Syntax.Constraint] -> Typed.TypedTerm Syntax.DataDeclaration+dataDeclarationWithContext original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "keyword"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "keyword")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "context"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "head"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "head")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "constructors"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "constructors")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "deriving"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "deriving")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the deriving field of hydra.haskell.syntax.DataDeclaration+dataDeclarationWithDeriving :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm [Syntax.DerivingClause] -> Typed.TypedTerm Syntax.DataDeclaration+dataDeclarationWithDeriving original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "keyword"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "keyword")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "context"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "context")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "head"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "head")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "constructors"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "constructors")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "deriving"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the head field of hydra.haskell.syntax.DataDeclaration+dataDeclarationWithHead :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm Syntax.DeclarationHead -> Typed.TypedTerm Syntax.DataDeclaration+dataDeclarationWithHead original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "keyword"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "keyword")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "context"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "context")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "head"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "constructors"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "constructors")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "deriving"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "deriving")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the keyword field of hydra.haskell.syntax.DataDeclaration+dataDeclarationWithKeyword :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm Syntax.DataKeyword -> Typed.TypedTerm Syntax.DataDeclaration+dataDeclarationWithKeyword original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "keyword"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "context"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "context")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "head"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "head")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "constructors"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "constructors")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "deriving"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "deriving")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.DataDeclaration"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the data variant of hydra.haskell.syntax.DataKeyword+dataKeywordData :: Typed.TypedTerm Syntax.DataKeyword+dataKeywordData =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.DataKeyword"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "data"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.haskell.syntax.DataKeyword+dataKeywordDataKeyword :: Typed.TypedName Syntax.DataKeyword+dataKeywordDataKeyword = Typed.TypedName (Model.Name "hydra.haskell.syntax.DataKeyword")++-- | DSL injection for the newtype variant of hydra.haskell.syntax.DataKeyword+dataKeywordNewtype :: Typed.TypedTerm Syntax.DataKeyword+dataKeywordNewtype =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.DataKeyword"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "newtype"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the data variant of hydra.haskell.syntax.Declaration+declarationData :: Typed.TypedTerm Syntax.DataDeclaration -> Typed.TypedTerm Syntax.Declaration+declarationData x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Declaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "data"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.haskell.syntax.Declaration+declarationDeclaration :: Typed.TypedName Syntax.Declaration+declarationDeclaration = Typed.TypedName (Model.Name "hydra.haskell.syntax.Declaration")++-- | DSL injection for the application variant of hydra.haskell.syntax.DeclarationHead+declarationHeadApplication :: Typed.TypedTerm Syntax.ApplicationDeclarationHead -> Typed.TypedTerm Syntax.DeclarationHead+declarationHeadApplication x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.DeclarationHead"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "application"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.haskell.syntax.DeclarationHead+declarationHeadDeclarationHead :: Typed.TypedName Syntax.DeclarationHead+declarationHeadDeclarationHead = Typed.TypedName (Model.Name "hydra.haskell.syntax.DeclarationHead")++-- | DSL injection for the simple variant of hydra.haskell.syntax.DeclarationHead+declarationHeadSimple :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.DeclarationHead+declarationHeadSimple x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.DeclarationHead"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "simple"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the type variant of hydra.haskell.syntax.Declaration+declarationType :: Typed.TypedTerm Syntax.TypeSynonymDeclaration -> Typed.TypedTerm Syntax.Declaration+declarationType x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Declaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "type"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the typedBinding variant of hydra.haskell.syntax.Declaration+declarationTypedBinding :: Typed.TypedTerm Syntax.TypedBinding -> Typed.TypedTerm Syntax.Declaration+declarationTypedBinding x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Declaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "typedBinding"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the valueBinding variant of hydra.haskell.syntax.Declaration+declarationValueBinding :: Typed.TypedTerm Syntax.ValueBinding -> Typed.TypedTerm Syntax.Declaration+declarationValueBinding x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Declaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "valueBinding"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for the hydra.haskell.syntax.DerivingClause wrapper+derivingClause :: Typed.TypedTerm [Syntax.Name] -> Typed.TypedTerm Syntax.DerivingClause+derivingClause x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.haskell.syntax.DerivingClause"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.DerivingClause+derivingClauseDerivingClause :: Typed.TypedName Syntax.DerivingClause+derivingClauseDerivingClause = Typed.TypedName (Model.Name "hydra.haskell.syntax.DerivingClause")++-- | DSL injection for the declaration variant of hydra.haskell.syntax.Export+exportDeclaration :: Typed.TypedTerm Syntax.NamedImportExport -> Typed.TypedTerm Syntax.Export+exportDeclaration x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Export"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "declaration"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.haskell.syntax.Export+exportExport :: Typed.TypedName Syntax.Export+exportExport = Typed.TypedName (Model.Name "hydra.haskell.syntax.Export")++-- | DSL injection for the module variant of hydra.haskell.syntax.Export+exportModule :: Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm Syntax.Export+exportModule x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Export"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "module"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the application variant of hydra.haskell.syntax.Expression+expressionApplication :: Typed.TypedTerm Syntax.ApplicationExpression -> Typed.TypedTerm Syntax.Expression+expressionApplication x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "application"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the case variant of hydra.haskell.syntax.Expression+expressionCase :: Typed.TypedTerm Syntax.CaseExpression -> Typed.TypedTerm Syntax.Expression+expressionCase x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "case"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the constructRecord variant of hydra.haskell.syntax.Expression+expressionConstructRecord :: Typed.TypedTerm Syntax.RecordExpression -> Typed.TypedTerm Syntax.Expression+expressionConstructRecord x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "constructRecord"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the do variant of hydra.haskell.syntax.Expression+expressionDo :: Typed.TypedTerm [Syntax.Statement] -> Typed.TypedTerm Syntax.Expression+expressionDo x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "do"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.haskell.syntax.Expression+expressionExpression :: Typed.TypedName Syntax.Expression+expressionExpression = Typed.TypedName (Model.Name "hydra.haskell.syntax.Expression")++-- | DSL injection for the if variant of hydra.haskell.syntax.Expression+expressionIf :: Typed.TypedTerm Syntax.IfExpression -> Typed.TypedTerm Syntax.Expression+expressionIf x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "if"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the infixApplication variant of hydra.haskell.syntax.Expression+expressionInfixApplication :: Typed.TypedTerm Syntax.InfixExpression -> Typed.TypedTerm Syntax.Expression+expressionInfixApplication x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "infixApplication"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the lambda variant of hydra.haskell.syntax.Expression+expressionLambda :: Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.Expression+expressionLambda x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "lambda"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the leftSection variant of hydra.haskell.syntax.Expression+expressionLeftSection :: Typed.TypedTerm Syntax.SectionExpression -> Typed.TypedTerm Syntax.Expression+expressionLeftSection x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "leftSection"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the let variant of hydra.haskell.syntax.Expression+expressionLet :: Typed.TypedTerm Syntax.LetExpression -> Typed.TypedTerm Syntax.Expression+expressionLet x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "let"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the list variant of hydra.haskell.syntax.Expression+expressionList :: Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.Expression+expressionList x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "list"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the literal variant of hydra.haskell.syntax.Expression+expressionLiteral :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Syntax.Expression+expressionLiteral x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "literal"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the rightSection variant of hydra.haskell.syntax.Expression+expressionRightSection :: Typed.TypedTerm Syntax.SectionExpression -> Typed.TypedTerm Syntax.Expression+expressionRightSection x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "rightSection"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the tuple variant of hydra.haskell.syntax.Expression+expressionTuple :: Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.Expression+expressionTuple x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "tuple"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the typeSignature variant of hydra.haskell.syntax.Expression+expressionTypeSignature :: Typed.TypedTerm Syntax.TypedExpression -> Typed.TypedTerm Syntax.Expression+expressionTypeSignature x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "typeSignature"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the updateRecord variant of hydra.haskell.syntax.Expression+expressionUpdateRecord :: Typed.TypedTerm Syntax.RecordUpdateExpression -> Typed.TypedTerm Syntax.Expression+expressionUpdateRecord x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "updateRecord"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the variable variant of hydra.haskell.syntax.Expression+expressionVariable :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Expression+expressionVariable x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "variable"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.haskell.syntax.Field+field :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.Field+field name type_ comments =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.Field"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm comments)}]}))++-- | DSL accessor for the comments field of hydra.haskell.syntax.Field+fieldComments :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm (Maybe String)+fieldComments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Field"),+        Model.projectionFieldName = (Model.Name "comments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.Field+fieldField :: Typed.TypedName Syntax.Field+fieldField = Typed.TypedName (Model.Name "hydra.haskell.syntax.Field")++-- | DSL accessor for the name field of hydra.haskell.syntax.Field+fieldName :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm Syntax.Name+fieldName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Field"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.haskell.syntax.Field+fieldType :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm Syntax.Type+fieldType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Field"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL constructor for hydra.haskell.syntax.FieldUpdate+fieldUpdate :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.FieldUpdate+fieldUpdate name value =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.FieldUpdate"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Typed.unTypedTerm value)}]}))++-- | DSL name token for hydra.haskell.syntax.FieldUpdate+fieldUpdateFieldUpdate :: Typed.TypedName Syntax.FieldUpdate+fieldUpdateFieldUpdate = Typed.TypedName (Model.Name "hydra.haskell.syntax.FieldUpdate")++-- | DSL accessor for the name field of hydra.haskell.syntax.FieldUpdate+fieldUpdateName :: Typed.TypedTerm Syntax.FieldUpdate -> Typed.TypedTerm Syntax.Name+fieldUpdateName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.FieldUpdate"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the value field of hydra.haskell.syntax.FieldUpdate+fieldUpdateValue :: Typed.TypedTerm Syntax.FieldUpdate -> Typed.TypedTerm Syntax.Expression+fieldUpdateValue x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.FieldUpdate"),+        Model.projectionFieldName = (Model.Name "value")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the name field of hydra.haskell.syntax.FieldUpdate+fieldUpdateWithName :: Typed.TypedTerm Syntax.FieldUpdate -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.FieldUpdate+fieldUpdateWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.FieldUpdate"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.FieldUpdate"),+              Model.projectionFieldName = (Model.Name "value")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the value field of hydra.haskell.syntax.FieldUpdate+fieldUpdateWithValue :: Typed.TypedTerm Syntax.FieldUpdate -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.FieldUpdate+fieldUpdateWithValue original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.FieldUpdate"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.FieldUpdate"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the comments field of hydra.haskell.syntax.Field+fieldWithComments :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.Field+fieldWithComments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.Field"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Field"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Field"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the name field of hydra.haskell.syntax.Field+fieldWithName :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Field+fieldWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.Field"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Field"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Field"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.haskell.syntax.Field+fieldWithType :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Field+fieldWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.Field"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Field"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Field"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.haskell.syntax.FunctionType+functionType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.FunctionType+functionType domain codomain =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.FunctionType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "domain"),+          Model.fieldTerm = (Typed.unTypedTerm domain)},+        Model.Field {+          Model.fieldName = (Model.Name "codomain"),+          Model.fieldTerm = (Typed.unTypedTerm codomain)}]}))++-- | DSL accessor for the codomain field of hydra.haskell.syntax.FunctionType+functionTypeCodomain :: Typed.TypedTerm Syntax.FunctionType -> Typed.TypedTerm Syntax.Type+functionTypeCodomain x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.FunctionType"),+        Model.projectionFieldName = (Model.Name "codomain")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the domain field of hydra.haskell.syntax.FunctionType+functionTypeDomain :: Typed.TypedTerm Syntax.FunctionType -> Typed.TypedTerm Syntax.Type+functionTypeDomain x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.FunctionType"),+        Model.projectionFieldName = (Model.Name "domain")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.FunctionType+functionTypeFunctionType :: Typed.TypedName Syntax.FunctionType+functionTypeFunctionType = Typed.TypedName (Model.Name "hydra.haskell.syntax.FunctionType")++-- | DSL updater for the codomain field of hydra.haskell.syntax.FunctionType+functionTypeWithCodomain :: Typed.TypedTerm Syntax.FunctionType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.FunctionType+functionTypeWithCodomain original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.FunctionType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "domain"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.FunctionType"),+              Model.projectionFieldName = (Model.Name "domain")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "codomain"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the domain field of hydra.haskell.syntax.FunctionType+functionTypeWithDomain :: Typed.TypedTerm Syntax.FunctionType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.FunctionType+functionTypeWithDomain original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.FunctionType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "domain"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "codomain"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.FunctionType"),+              Model.projectionFieldName = (Model.Name "codomain")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.haskell.syntax.IfExpression+ifExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.IfExpression+ifExpression condition then_ else_ =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.IfExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "condition"),+          Model.fieldTerm = (Typed.unTypedTerm condition)},+        Model.Field {+          Model.fieldName = (Model.Name "then"),+          Model.fieldTerm = (Typed.unTypedTerm then_)},+        Model.Field {+          Model.fieldName = (Model.Name "else"),+          Model.fieldTerm = (Typed.unTypedTerm else_)}]}))++-- | DSL accessor for the condition field of hydra.haskell.syntax.IfExpression+ifExpressionCondition :: Typed.TypedTerm Syntax.IfExpression -> Typed.TypedTerm Syntax.Expression+ifExpressionCondition x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.IfExpression"),+        Model.projectionFieldName = (Model.Name "condition")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the else field of hydra.haskell.syntax.IfExpression+ifExpressionElse :: Typed.TypedTerm Syntax.IfExpression -> Typed.TypedTerm Syntax.Expression+ifExpressionElse x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.IfExpression"),+        Model.projectionFieldName = (Model.Name "else")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.IfExpression+ifExpressionIfExpression :: Typed.TypedName Syntax.IfExpression+ifExpressionIfExpression = Typed.TypedName (Model.Name "hydra.haskell.syntax.IfExpression")++-- | DSL accessor for the then field of hydra.haskell.syntax.IfExpression+ifExpressionThen :: Typed.TypedTerm Syntax.IfExpression -> Typed.TypedTerm Syntax.Expression+ifExpressionThen x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.IfExpression"),+        Model.projectionFieldName = (Model.Name "then")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the condition field of hydra.haskell.syntax.IfExpression+ifExpressionWithCondition :: Typed.TypedTerm Syntax.IfExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.IfExpression+ifExpressionWithCondition original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.IfExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "condition"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "then"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.IfExpression"),+              Model.projectionFieldName = (Model.Name "then")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "else"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.IfExpression"),+              Model.projectionFieldName = (Model.Name "else")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the else field of hydra.haskell.syntax.IfExpression+ifExpressionWithElse :: Typed.TypedTerm Syntax.IfExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.IfExpression+ifExpressionWithElse original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.IfExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "condition"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.IfExpression"),+              Model.projectionFieldName = (Model.Name "condition")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "then"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.IfExpression"),+              Model.projectionFieldName = (Model.Name "then")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "else"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the then field of hydra.haskell.syntax.IfExpression+ifExpressionWithThen :: Typed.TypedTerm Syntax.IfExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.IfExpression+ifExpressionWithThen original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.IfExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "condition"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.IfExpression"),+              Model.projectionFieldName = (Model.Name "condition")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "then"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "else"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.IfExpression"),+              Model.projectionFieldName = (Model.Name "else")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.haskell.syntax.Import+import_ :: Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm (Maybe Syntax.ModuleName) -> Typed.TypedTerm (Maybe Syntax.ImportSpec) -> Typed.TypedTerm Syntax.Import+import_ qualified module_ as spec =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.Import"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "qualified"),+          Model.fieldTerm = (Typed.unTypedTerm qualified)},+        Model.Field {+          Model.fieldName = (Model.Name "module"),+          Model.fieldTerm = (Typed.unTypedTerm module_)},+        Model.Field {+          Model.fieldName = (Model.Name "as"),+          Model.fieldTerm = (Typed.unTypedTerm as)},+        Model.Field {+          Model.fieldName = (Model.Name "spec"),+          Model.fieldTerm = (Typed.unTypedTerm spec)}]}))++-- | DSL accessor for the as field of hydra.haskell.syntax.Import+importAs :: Typed.TypedTerm Syntax.Import -> Typed.TypedTerm (Maybe Syntax.ModuleName)+importAs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Import"),+        Model.projectionFieldName = (Model.Name "as")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL injection for the all variant of hydra.haskell.syntax.ImportExportSubspec+importExportSubspecAll :: Typed.TypedTerm Syntax.ImportExportSubspec+importExportSubspecAll =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.ImportExportSubspec"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "all"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.haskell.syntax.ImportExportSubspec+importExportSubspecImportExportSubspec :: Typed.TypedName Syntax.ImportExportSubspec+importExportSubspecImportExportSubspec = Typed.TypedName (Model.Name "hydra.haskell.syntax.ImportExportSubspec")++-- | DSL injection for the list variant of hydra.haskell.syntax.ImportExportSubspec+importExportSubspecList :: Typed.TypedTerm [Syntax.Name] -> Typed.TypedTerm Syntax.ImportExportSubspec+importExportSubspecList x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.ImportExportSubspec"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "list"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.haskell.syntax.Import+importImport :: Typed.TypedName Syntax.Import+importImport = Typed.TypedName (Model.Name "hydra.haskell.syntax.Import")++-- | DSL name token for hydra.haskell.syntax.ImportModifier+importModifierImportModifier :: Typed.TypedName Syntax.ImportModifier+importModifierImportModifier = Typed.TypedName (Model.Name "hydra.haskell.syntax.ImportModifier")++-- | DSL injection for the pattern variant of hydra.haskell.syntax.ImportModifier+importModifierPattern :: Typed.TypedTerm Syntax.ImportModifier+importModifierPattern =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.ImportModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "pattern"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the type variant of hydra.haskell.syntax.ImportModifier+importModifierType :: Typed.TypedTerm Syntax.ImportModifier+importModifierType =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.ImportModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "type"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL accessor for the module field of hydra.haskell.syntax.Import+importModule :: Typed.TypedTerm Syntax.Import -> Typed.TypedTerm Syntax.ModuleName+importModule x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Import"),+        Model.projectionFieldName = (Model.Name "module")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the qualified field of hydra.haskell.syntax.Import+importQualified :: Typed.TypedTerm Syntax.Import -> Typed.TypedTerm Bool+importQualified x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Import"),+        Model.projectionFieldName = (Model.Name "qualified")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the spec field of hydra.haskell.syntax.Import+importSpec :: Typed.TypedTerm Syntax.Import -> Typed.TypedTerm (Maybe Syntax.ImportSpec)+importSpec x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Import"),+        Model.projectionFieldName = (Model.Name "spec")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL injection for the hiding variant of hydra.haskell.syntax.ImportSpec+importSpecHiding :: Typed.TypedTerm [Syntax.NamedImportExport] -> Typed.TypedTerm Syntax.ImportSpec+importSpecHiding x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.ImportSpec"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "hiding"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.haskell.syntax.ImportSpec+importSpecImportSpec :: Typed.TypedName Syntax.ImportSpec+importSpecImportSpec = Typed.TypedName (Model.Name "hydra.haskell.syntax.ImportSpec")++-- | DSL injection for the list variant of hydra.haskell.syntax.ImportSpec+importSpecList :: Typed.TypedTerm [Syntax.NamedImportExport] -> Typed.TypedTerm Syntax.ImportSpec+importSpecList x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.ImportSpec"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "list"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL updater for the as field of hydra.haskell.syntax.Import+importWithAs :: Typed.TypedTerm Syntax.Import -> Typed.TypedTerm (Maybe Syntax.ModuleName) -> Typed.TypedTerm Syntax.Import+importWithAs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.Import"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "qualified"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Import"),+              Model.projectionFieldName = (Model.Name "qualified")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "module"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Import"),+              Model.projectionFieldName = (Model.Name "module")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "as"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "spec"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Import"),+              Model.projectionFieldName = (Model.Name "spec")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the module field of hydra.haskell.syntax.Import+importWithModule :: Typed.TypedTerm Syntax.Import -> Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm Syntax.Import+importWithModule original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.Import"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "qualified"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Import"),+              Model.projectionFieldName = (Model.Name "qualified")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "module"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "as"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Import"),+              Model.projectionFieldName = (Model.Name "as")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "spec"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Import"),+              Model.projectionFieldName = (Model.Name "spec")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the qualified field of hydra.haskell.syntax.Import+importWithQualified :: Typed.TypedTerm Syntax.Import -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Import+importWithQualified original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.Import"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "qualified"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "module"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Import"),+              Model.projectionFieldName = (Model.Name "module")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "as"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Import"),+              Model.projectionFieldName = (Model.Name "as")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "spec"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Import"),+              Model.projectionFieldName = (Model.Name "spec")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the spec field of hydra.haskell.syntax.Import+importWithSpec :: Typed.TypedTerm Syntax.Import -> Typed.TypedTerm (Maybe Syntax.ImportSpec) -> Typed.TypedTerm Syntax.Import+importWithSpec original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.Import"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "qualified"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Import"),+              Model.projectionFieldName = (Model.Name "qualified")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "module"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Import"),+              Model.projectionFieldName = (Model.Name "module")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "as"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Import"),+              Model.projectionFieldName = (Model.Name "as")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "spec"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.haskell.syntax.InfixExpression+infixExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Operator -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.InfixExpression+infixExpression lhs operator rhs =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.InfixExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm lhs)},+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Typed.unTypedTerm operator)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))++-- | DSL name token for hydra.haskell.syntax.InfixExpression+infixExpressionInfixExpression :: Typed.TypedName Syntax.InfixExpression+infixExpressionInfixExpression = Typed.TypedName (Model.Name "hydra.haskell.syntax.InfixExpression")++-- | DSL accessor for the lhs field of hydra.haskell.syntax.InfixExpression+infixExpressionLhs :: Typed.TypedTerm Syntax.InfixExpression -> Typed.TypedTerm Syntax.Expression+infixExpressionLhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.InfixExpression"),+        Model.projectionFieldName = (Model.Name "lhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the operator field of hydra.haskell.syntax.InfixExpression+infixExpressionOperator :: Typed.TypedTerm Syntax.InfixExpression -> Typed.TypedTerm Syntax.Operator+infixExpressionOperator x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.InfixExpression"),+        Model.projectionFieldName = (Model.Name "operator")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the rhs field of hydra.haskell.syntax.InfixExpression+infixExpressionRhs :: Typed.TypedTerm Syntax.InfixExpression -> Typed.TypedTerm Syntax.Expression+infixExpressionRhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.InfixExpression"),+        Model.projectionFieldName = (Model.Name "rhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the lhs field of hydra.haskell.syntax.InfixExpression+infixExpressionWithLhs :: Typed.TypedTerm Syntax.InfixExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.InfixExpression+infixExpressionWithLhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.InfixExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.InfixExpression"),+              Model.projectionFieldName = (Model.Name "operator")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.InfixExpression"),+              Model.projectionFieldName = (Model.Name "rhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the operator field of hydra.haskell.syntax.InfixExpression+infixExpressionWithOperator :: Typed.TypedTerm Syntax.InfixExpression -> Typed.TypedTerm Syntax.Operator -> Typed.TypedTerm Syntax.InfixExpression+infixExpressionWithOperator original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.InfixExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.InfixExpression"),+              Model.projectionFieldName = (Model.Name "lhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.InfixExpression"),+              Model.projectionFieldName = (Model.Name "rhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the rhs field of hydra.haskell.syntax.InfixExpression+infixExpressionWithRhs :: Typed.TypedTerm Syntax.InfixExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.InfixExpression+infixExpressionWithRhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.InfixExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.InfixExpression"),+              Model.projectionFieldName = (Model.Name "lhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.InfixExpression"),+              Model.projectionFieldName = (Model.Name "operator")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.haskell.syntax.InfixType+infixType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Operator -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.InfixType+infixType lhs operator rhs =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.InfixType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm lhs)},+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Typed.unTypedTerm operator)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))++-- | DSL name token for hydra.haskell.syntax.InfixType+infixTypeInfixType :: Typed.TypedName Syntax.InfixType+infixTypeInfixType = Typed.TypedName (Model.Name "hydra.haskell.syntax.InfixType")++-- | DSL accessor for the lhs field of hydra.haskell.syntax.InfixType+infixTypeLhs :: Typed.TypedTerm Syntax.InfixType -> Typed.TypedTerm Syntax.Type+infixTypeLhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.InfixType"),+        Model.projectionFieldName = (Model.Name "lhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the operator field of hydra.haskell.syntax.InfixType+infixTypeOperator :: Typed.TypedTerm Syntax.InfixType -> Typed.TypedTerm Syntax.Operator+infixTypeOperator x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.InfixType"),+        Model.projectionFieldName = (Model.Name "operator")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the rhs field of hydra.haskell.syntax.InfixType+infixTypeRhs :: Typed.TypedTerm Syntax.InfixType -> Typed.TypedTerm Syntax.Type+infixTypeRhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.InfixType"),+        Model.projectionFieldName = (Model.Name "rhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the lhs field of hydra.haskell.syntax.InfixType+infixTypeWithLhs :: Typed.TypedTerm Syntax.InfixType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.InfixType+infixTypeWithLhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.InfixType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.InfixType"),+              Model.projectionFieldName = (Model.Name "operator")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.InfixType"),+              Model.projectionFieldName = (Model.Name "rhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the operator field of hydra.haskell.syntax.InfixType+infixTypeWithOperator :: Typed.TypedTerm Syntax.InfixType -> Typed.TypedTerm Syntax.Operator -> Typed.TypedTerm Syntax.InfixType+infixTypeWithOperator original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.InfixType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.InfixType"),+              Model.projectionFieldName = (Model.Name "lhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.InfixType"),+              Model.projectionFieldName = (Model.Name "rhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the rhs field of hydra.haskell.syntax.InfixType+infixTypeWithRhs :: Typed.TypedTerm Syntax.InfixType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.InfixType+infixTypeWithRhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.InfixType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.InfixType"),+              Model.projectionFieldName = (Model.Name "lhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.InfixType"),+              Model.projectionFieldName = (Model.Name "operator")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.haskell.syntax.LambdaExpression+lambdaExpression :: Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.LambdaExpression+lambdaExpression bindings inner =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.LambdaExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "bindings"),+          Model.fieldTerm = (Typed.unTypedTerm bindings)},+        Model.Field {+          Model.fieldName = (Model.Name "inner"),+          Model.fieldTerm = (Typed.unTypedTerm inner)}]}))++-- | DSL accessor for the bindings field of hydra.haskell.syntax.LambdaExpression+lambdaExpressionBindings :: Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm [Syntax.Pattern]+lambdaExpressionBindings x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.LambdaExpression"),+        Model.projectionFieldName = (Model.Name "bindings")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the inner field of hydra.haskell.syntax.LambdaExpression+lambdaExpressionInner :: Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.Expression+lambdaExpressionInner x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.LambdaExpression"),+        Model.projectionFieldName = (Model.Name "inner")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.LambdaExpression+lambdaExpressionLambdaExpression :: Typed.TypedName Syntax.LambdaExpression+lambdaExpressionLambdaExpression = Typed.TypedName (Model.Name "hydra.haskell.syntax.LambdaExpression")++-- | DSL updater for the bindings field of hydra.haskell.syntax.LambdaExpression+lambdaExpressionWithBindings :: Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.LambdaExpression+lambdaExpressionWithBindings original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.LambdaExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "bindings"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "inner"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.LambdaExpression"),+              Model.projectionFieldName = (Model.Name "inner")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the inner field of hydra.haskell.syntax.LambdaExpression+lambdaExpressionWithInner :: Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.LambdaExpression+lambdaExpressionWithInner original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.LambdaExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "bindings"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.LambdaExpression"),+              Model.projectionFieldName = (Model.Name "bindings")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inner"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.haskell.syntax.LetExpression+letExpression :: Typed.TypedTerm [Syntax.LocalBinding] -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.LetExpression+letExpression bindings inner =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.LetExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "bindings"),+          Model.fieldTerm = (Typed.unTypedTerm bindings)},+        Model.Field {+          Model.fieldName = (Model.Name "inner"),+          Model.fieldTerm = (Typed.unTypedTerm inner)}]}))++-- | DSL accessor for the bindings field of hydra.haskell.syntax.LetExpression+letExpressionBindings :: Typed.TypedTerm Syntax.LetExpression -> Typed.TypedTerm [Syntax.LocalBinding]+letExpressionBindings x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.LetExpression"),+        Model.projectionFieldName = (Model.Name "bindings")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the inner field of hydra.haskell.syntax.LetExpression+letExpressionInner :: Typed.TypedTerm Syntax.LetExpression -> Typed.TypedTerm Syntax.Expression+letExpressionInner x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.LetExpression"),+        Model.projectionFieldName = (Model.Name "inner")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.LetExpression+letExpressionLetExpression :: Typed.TypedName Syntax.LetExpression+letExpressionLetExpression = Typed.TypedName (Model.Name "hydra.haskell.syntax.LetExpression")++-- | DSL updater for the bindings field of hydra.haskell.syntax.LetExpression+letExpressionWithBindings :: Typed.TypedTerm Syntax.LetExpression -> Typed.TypedTerm [Syntax.LocalBinding] -> Typed.TypedTerm Syntax.LetExpression+letExpressionWithBindings original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.LetExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "bindings"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "inner"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.LetExpression"),+              Model.projectionFieldName = (Model.Name "inner")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the inner field of hydra.haskell.syntax.LetExpression+letExpressionWithInner :: Typed.TypedTerm Syntax.LetExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.LetExpression+letExpressionWithInner original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.LetExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "bindings"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.LetExpression"),+              Model.projectionFieldName = (Model.Name "bindings")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inner"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the char variant of hydra.haskell.syntax.Literal+literalChar :: Typed.TypedTerm Int -> Typed.TypedTerm Syntax.Literal+literalChar x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Literal"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "char"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the double variant of hydra.haskell.syntax.Literal+literalDouble :: Typed.TypedTerm Double -> Typed.TypedTerm Syntax.Literal+literalDouble x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Literal"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "double"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the float variant of hydra.haskell.syntax.Literal+literalFloat :: Typed.TypedTerm Float -> Typed.TypedTerm Syntax.Literal+literalFloat x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Literal"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "float"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the int variant of hydra.haskell.syntax.Literal+literalInt :: Typed.TypedTerm Int -> Typed.TypedTerm Syntax.Literal+literalInt x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Literal"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "int"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the integer variant of hydra.haskell.syntax.Literal+literalInteger :: Typed.TypedTerm Integer -> Typed.TypedTerm Syntax.Literal+literalInteger x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Literal"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "integer"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.haskell.syntax.Literal+literalLiteral :: Typed.TypedName Syntax.Literal+literalLiteral = Typed.TypedName (Model.Name "hydra.haskell.syntax.Literal")++-- | DSL injection for the string variant of hydra.haskell.syntax.Literal+literalString :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Literal+literalString x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Literal"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "string"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.haskell.syntax.LocalBinding+localBindingLocalBinding :: Typed.TypedName Syntax.LocalBinding+localBindingLocalBinding = Typed.TypedName (Model.Name "hydra.haskell.syntax.LocalBinding")++-- | DSL injection for the signature variant of hydra.haskell.syntax.LocalBinding+localBindingSignature :: Typed.TypedTerm Syntax.TypeSignature -> Typed.TypedTerm Syntax.LocalBinding+localBindingSignature x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.LocalBinding"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "signature"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the value variant of hydra.haskell.syntax.LocalBinding+localBindingValue :: Typed.TypedTerm Syntax.ValueBinding -> Typed.TypedTerm Syntax.LocalBinding+localBindingValue x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.LocalBinding"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "value"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for the hydra.haskell.syntax.LocalBindings wrapper+localBindings :: Typed.TypedTerm [Syntax.LocalBinding] -> Typed.TypedTerm Syntax.LocalBindings+localBindings x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.haskell.syntax.LocalBindings"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.LocalBindings+localBindingsLocalBindings :: Typed.TypedName Syntax.LocalBindings+localBindingsLocalBindings = Typed.TypedName (Model.Name "hydra.haskell.syntax.LocalBindings")++-- | DSL constructor for hydra.haskell.syntax.Module+module_ :: Typed.TypedTerm (Maybe Syntax.ModuleHead) -> Typed.TypedTerm [Syntax.Import] -> Typed.TypedTerm [Syntax.Declaration] -> Typed.TypedTerm Syntax.Module+module_ head imports declarations =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.Module"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "head"),+          Model.fieldTerm = (Typed.unTypedTerm head)},+        Model.Field {+          Model.fieldName = (Model.Name "imports"),+          Model.fieldTerm = (Typed.unTypedTerm imports)},+        Model.Field {+          Model.fieldName = (Model.Name "declarations"),+          Model.fieldTerm = (Typed.unTypedTerm declarations)}]}))++-- | DSL accessor for the declarations field of hydra.haskell.syntax.Module+moduleDeclarations :: Typed.TypedTerm Syntax.Module -> Typed.TypedTerm [Syntax.Declaration]+moduleDeclarations x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Module"),+        Model.projectionFieldName = (Model.Name "declarations")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the head field of hydra.haskell.syntax.Module+moduleHead :: Typed.TypedTerm Syntax.Module -> Typed.TypedTerm (Maybe Syntax.ModuleHead)+moduleHead x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Module"),+        Model.projectionFieldName = (Model.Name "head")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL constructor for hydra.haskell.syntax.ModuleHead+moduleHead2 :: Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm [Syntax.Export] -> Typed.TypedTerm Syntax.ModuleHead+moduleHead2 comments name exports =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.ModuleHead"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm comments)},+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "exports"),+          Model.fieldTerm = (Typed.unTypedTerm exports)}]}))++-- | DSL accessor for the comments field of hydra.haskell.syntax.ModuleHead+moduleHeadComments :: Typed.TypedTerm Syntax.ModuleHead -> Typed.TypedTerm (Maybe String)+moduleHeadComments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ModuleHead"),+        Model.projectionFieldName = (Model.Name "comments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the exports field of hydra.haskell.syntax.ModuleHead+moduleHeadExports :: Typed.TypedTerm Syntax.ModuleHead -> Typed.TypedTerm [Syntax.Export]+moduleHeadExports x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ModuleHead"),+        Model.projectionFieldName = (Model.Name "exports")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.ModuleHead+moduleHeadModuleHead :: Typed.TypedName Syntax.ModuleHead+moduleHeadModuleHead = Typed.TypedName (Model.Name "hydra.haskell.syntax.ModuleHead")++-- | DSL accessor for the name field of hydra.haskell.syntax.ModuleHead+moduleHeadName :: Typed.TypedTerm Syntax.ModuleHead -> Typed.TypedTerm Syntax.ModuleName+moduleHeadName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ModuleHead"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the comments field of hydra.haskell.syntax.ModuleHead+moduleHeadWithComments :: Typed.TypedTerm Syntax.ModuleHead -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.ModuleHead+moduleHeadWithComments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.ModuleHead"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ModuleHead"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "exports"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ModuleHead"),+              Model.projectionFieldName = (Model.Name "exports")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the exports field of hydra.haskell.syntax.ModuleHead+moduleHeadWithExports :: Typed.TypedTerm Syntax.ModuleHead -> Typed.TypedTerm [Syntax.Export] -> Typed.TypedTerm Syntax.ModuleHead+moduleHeadWithExports original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.ModuleHead"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ModuleHead"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ModuleHead"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "exports"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the name field of hydra.haskell.syntax.ModuleHead+moduleHeadWithName :: Typed.TypedTerm Syntax.ModuleHead -> Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm Syntax.ModuleHead+moduleHeadWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.ModuleHead"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ModuleHead"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "exports"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.ModuleHead"),+              Model.projectionFieldName = (Model.Name "exports")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL accessor for the imports field of hydra.haskell.syntax.Module+moduleImports :: Typed.TypedTerm Syntax.Module -> Typed.TypedTerm [Syntax.Import]+moduleImports x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Module"),+        Model.projectionFieldName = (Model.Name "imports")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.Module+moduleModule :: Typed.TypedName Syntax.Module+moduleModule = Typed.TypedName (Model.Name "hydra.haskell.syntax.Module")++-- | DSL constructor for the hydra.haskell.syntax.ModuleName wrapper+moduleName :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.ModuleName+moduleName x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.haskell.syntax.ModuleName"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.ModuleName+moduleNameModuleName :: Typed.TypedName Syntax.ModuleName+moduleNameModuleName = Typed.TypedName (Model.Name "hydra.haskell.syntax.ModuleName")++-- | DSL updater for the declarations field of hydra.haskell.syntax.Module+moduleWithDeclarations :: Typed.TypedTerm Syntax.Module -> Typed.TypedTerm [Syntax.Declaration] -> Typed.TypedTerm Syntax.Module+moduleWithDeclarations original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.Module"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "head"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Module"),+              Model.projectionFieldName = (Model.Name "head")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "imports"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Module"),+              Model.projectionFieldName = (Model.Name "imports")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "declarations"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the head field of hydra.haskell.syntax.Module+moduleWithHead :: Typed.TypedTerm Syntax.Module -> Typed.TypedTerm (Maybe Syntax.ModuleHead) -> Typed.TypedTerm Syntax.Module+moduleWithHead original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.Module"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "head"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "imports"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Module"),+              Model.projectionFieldName = (Model.Name "imports")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "declarations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Module"),+              Model.projectionFieldName = (Model.Name "declarations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the imports field of hydra.haskell.syntax.Module+moduleWithImports :: Typed.TypedTerm Syntax.Module -> Typed.TypedTerm [Syntax.Import] -> Typed.TypedTerm Syntax.Module+moduleWithImports original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.Module"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "head"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Module"),+              Model.projectionFieldName = (Model.Name "head")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "imports"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "declarations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.Module"),+              Model.projectionFieldName = (Model.Name "declarations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the implicit variant of hydra.haskell.syntax.Name+nameImplicit :: Typed.TypedTerm Syntax.QualifiedName -> Typed.TypedTerm Syntax.Name+nameImplicit x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Name"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "implicit"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.haskell.syntax.Name+nameName :: Typed.TypedName Syntax.Name+nameName = Typed.TypedName (Model.Name "hydra.haskell.syntax.Name")++-- | DSL injection for the normal variant of hydra.haskell.syntax.Name+nameNormal :: Typed.TypedTerm Syntax.QualifiedName -> Typed.TypedTerm Syntax.Name+nameNormal x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Name"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "normal"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for the hydra.haskell.syntax.NamePart wrapper+namePart :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.NamePart+namePart x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.haskell.syntax.NamePart"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.NamePart+namePartNamePart :: Typed.TypedName Syntax.NamePart+namePartNamePart = Typed.TypedName (Model.Name "hydra.haskell.syntax.NamePart")++-- | DSL constructor for hydra.haskell.syntax.NamedImportExport+namedImportExport :: Typed.TypedTerm (Maybe Syntax.ImportModifier) -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.ImportExportSubspec) -> Typed.TypedTerm Syntax.NamedImportExport+namedImportExport modifier name subspec =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.NamedImportExport"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifier"),+          Model.fieldTerm = (Typed.unTypedTerm modifier)},+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "subspec"),+          Model.fieldTerm = (Typed.unTypedTerm subspec)}]}))++-- | DSL accessor for the modifier field of hydra.haskell.syntax.NamedImportExport+namedImportExportModifier :: Typed.TypedTerm Syntax.NamedImportExport -> Typed.TypedTerm (Maybe Syntax.ImportModifier)+namedImportExportModifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.NamedImportExport"),+        Model.projectionFieldName = (Model.Name "modifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the name field of hydra.haskell.syntax.NamedImportExport+namedImportExportName :: Typed.TypedTerm Syntax.NamedImportExport -> Typed.TypedTerm Syntax.Name+namedImportExportName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.NamedImportExport"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.NamedImportExport+namedImportExportNamedImportExport :: Typed.TypedName Syntax.NamedImportExport+namedImportExportNamedImportExport = Typed.TypedName (Model.Name "hydra.haskell.syntax.NamedImportExport")++-- | DSL accessor for the subspec field of hydra.haskell.syntax.NamedImportExport+namedImportExportSubspec :: Typed.TypedTerm Syntax.NamedImportExport -> Typed.TypedTerm (Maybe Syntax.ImportExportSubspec)+namedImportExportSubspec x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.NamedImportExport"),+        Model.projectionFieldName = (Model.Name "subspec")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the modifier field of hydra.haskell.syntax.NamedImportExport+namedImportExportWithModifier :: Typed.TypedTerm Syntax.NamedImportExport -> Typed.TypedTerm (Maybe Syntax.ImportModifier) -> Typed.TypedTerm Syntax.NamedImportExport+namedImportExportWithModifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.NamedImportExport"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.NamedImportExport"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "subspec"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.NamedImportExport"),+              Model.projectionFieldName = (Model.Name "subspec")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the name field of hydra.haskell.syntax.NamedImportExport+namedImportExportWithName :: Typed.TypedTerm Syntax.NamedImportExport -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.NamedImportExport+namedImportExportWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.NamedImportExport"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.NamedImportExport"),+              Model.projectionFieldName = (Model.Name "modifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "subspec"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.NamedImportExport"),+              Model.projectionFieldName = (Model.Name "subspec")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the subspec field of hydra.haskell.syntax.NamedImportExport+namedImportExportWithSubspec :: Typed.TypedTerm Syntax.NamedImportExport -> Typed.TypedTerm (Maybe Syntax.ImportExportSubspec) -> Typed.TypedTerm Syntax.NamedImportExport+namedImportExportWithSubspec original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.NamedImportExport"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.NamedImportExport"),+              Model.projectionFieldName = (Model.Name "modifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.NamedImportExport"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "subspec"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the backtick variant of hydra.haskell.syntax.Operator+operatorBacktick :: Typed.TypedTerm Syntax.QualifiedName -> Typed.TypedTerm Syntax.Operator+operatorBacktick x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Operator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "backtick"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the normal variant of hydra.haskell.syntax.Operator+operatorNormal :: Typed.TypedTerm Syntax.QualifiedName -> Typed.TypedTerm Syntax.Operator+operatorNormal x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Operator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "normal"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.haskell.syntax.Operator+operatorOperator :: Typed.TypedName Syntax.Operator+operatorOperator = Typed.TypedName (Model.Name "hydra.haskell.syntax.Operator")++-- | DSL injection for the application variant of hydra.haskell.syntax.Pattern+patternApplication :: Typed.TypedTerm Syntax.ApplicationPattern -> Typed.TypedTerm Syntax.Pattern+patternApplication x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Pattern"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "application"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the as variant of hydra.haskell.syntax.Pattern+patternAs :: Typed.TypedTerm Syntax.AsPattern -> Typed.TypedTerm Syntax.Pattern+patternAs x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Pattern"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "as"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.haskell.syntax.PatternField+patternField :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.PatternField+patternField name pattern =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.PatternField"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "pattern"),+          Model.fieldTerm = (Typed.unTypedTerm pattern)}]}))++-- | DSL accessor for the name field of hydra.haskell.syntax.PatternField+patternFieldName :: Typed.TypedTerm Syntax.PatternField -> Typed.TypedTerm Syntax.Name+patternFieldName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.PatternField"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the pattern field of hydra.haskell.syntax.PatternField+patternFieldPattern :: Typed.TypedTerm Syntax.PatternField -> Typed.TypedTerm Syntax.Pattern+patternFieldPattern x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.PatternField"),+        Model.projectionFieldName = (Model.Name "pattern")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.PatternField+patternFieldPatternField :: Typed.TypedName Syntax.PatternField+patternFieldPatternField = Typed.TypedName (Model.Name "hydra.haskell.syntax.PatternField")++-- | DSL updater for the name field of hydra.haskell.syntax.PatternField+patternFieldWithName :: Typed.TypedTerm Syntax.PatternField -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.PatternField+patternFieldWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.PatternField"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "pattern"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.PatternField"),+              Model.projectionFieldName = (Model.Name "pattern")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the pattern field of hydra.haskell.syntax.PatternField+patternFieldWithPattern :: Typed.TypedTerm Syntax.PatternField -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.PatternField+patternFieldWithPattern original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.PatternField"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.PatternField"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "pattern"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the list variant of hydra.haskell.syntax.Pattern+patternList :: Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.Pattern+patternList x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Pattern"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "list"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the literal variant of hydra.haskell.syntax.Pattern+patternLiteral :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Syntax.Pattern+patternLiteral x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Pattern"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "literal"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the name variant of hydra.haskell.syntax.Pattern+patternName :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Pattern+patternName x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Pattern"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "name"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.haskell.syntax.Pattern+patternPattern :: Typed.TypedName Syntax.Pattern+patternPattern = Typed.TypedName (Model.Name "hydra.haskell.syntax.Pattern")++-- | DSL injection for the record variant of hydra.haskell.syntax.Pattern+patternRecord :: Typed.TypedTerm Syntax.RecordPattern -> Typed.TypedTerm Syntax.Pattern+patternRecord x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Pattern"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "record"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the tuple variant of hydra.haskell.syntax.Pattern+patternTuple :: Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.Pattern+patternTuple x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Pattern"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "tuple"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the typed variant of hydra.haskell.syntax.Pattern+patternTyped :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.Pattern+patternTyped x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Pattern"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "typed"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the wildcard variant of hydra.haskell.syntax.Pattern+patternWildcard :: Typed.TypedTerm Syntax.Pattern+patternWildcard =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Pattern"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "wildcard"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL constructor for hydra.haskell.syntax.PositionalConstructor+positionalConstructor :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.PositionalConstructor+positionalConstructor name fields comments =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.PositionalConstructor"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "fields"),+          Model.fieldTerm = (Typed.unTypedTerm fields)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm comments)}]}))++-- | DSL accessor for the comments field of hydra.haskell.syntax.PositionalConstructor+positionalConstructorComments :: Typed.TypedTerm Syntax.PositionalConstructor -> Typed.TypedTerm (Maybe String)+positionalConstructorComments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.PositionalConstructor"),+        Model.projectionFieldName = (Model.Name "comments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the fields field of hydra.haskell.syntax.PositionalConstructor+positionalConstructorFields :: Typed.TypedTerm Syntax.PositionalConstructor -> Typed.TypedTerm [Syntax.Type]+positionalConstructorFields x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.PositionalConstructor"),+        Model.projectionFieldName = (Model.Name "fields")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the name field of hydra.haskell.syntax.PositionalConstructor+positionalConstructorName :: Typed.TypedTerm Syntax.PositionalConstructor -> Typed.TypedTerm Syntax.Name+positionalConstructorName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.PositionalConstructor"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.PositionalConstructor+positionalConstructorPositionalConstructor :: Typed.TypedName Syntax.PositionalConstructor+positionalConstructorPositionalConstructor = Typed.TypedName (Model.Name "hydra.haskell.syntax.PositionalConstructor")++-- | DSL updater for the comments field of hydra.haskell.syntax.PositionalConstructor+positionalConstructorWithComments :: Typed.TypedTerm Syntax.PositionalConstructor -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.PositionalConstructor+positionalConstructorWithComments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.PositionalConstructor"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.PositionalConstructor"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "fields"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.PositionalConstructor"),+              Model.projectionFieldName = (Model.Name "fields")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the fields field of hydra.haskell.syntax.PositionalConstructor+positionalConstructorWithFields :: Typed.TypedTerm Syntax.PositionalConstructor -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.PositionalConstructor+positionalConstructorWithFields original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.PositionalConstructor"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.PositionalConstructor"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "fields"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.PositionalConstructor"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the name field of hydra.haskell.syntax.PositionalConstructor+positionalConstructorWithName :: Typed.TypedTerm Syntax.PositionalConstructor -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.PositionalConstructor+positionalConstructorWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.PositionalConstructor"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "fields"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.PositionalConstructor"),+              Model.projectionFieldName = (Model.Name "fields")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.PositionalConstructor"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.haskell.syntax.QualifiedName+qualifiedName :: Typed.TypedTerm [Syntax.NamePart] -> Typed.TypedTerm Syntax.NamePart -> Typed.TypedTerm Syntax.QualifiedName+qualifiedName qualifiers unqualified =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.QualifiedName"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "qualifiers"),+          Model.fieldTerm = (Typed.unTypedTerm qualifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "unqualified"),+          Model.fieldTerm = (Typed.unTypedTerm unqualified)}]}))++-- | DSL name token for hydra.haskell.syntax.QualifiedName+qualifiedNameQualifiedName :: Typed.TypedName Syntax.QualifiedName+qualifiedNameQualifiedName = Typed.TypedName (Model.Name "hydra.haskell.syntax.QualifiedName")++-- | DSL accessor for the qualifiers field of hydra.haskell.syntax.QualifiedName+qualifiedNameQualifiers :: Typed.TypedTerm Syntax.QualifiedName -> Typed.TypedTerm [Syntax.NamePart]+qualifiedNameQualifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.QualifiedName"),+        Model.projectionFieldName = (Model.Name "qualifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the unqualified field of hydra.haskell.syntax.QualifiedName+qualifiedNameUnqualified :: Typed.TypedTerm Syntax.QualifiedName -> Typed.TypedTerm Syntax.NamePart+qualifiedNameUnqualified x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.QualifiedName"),+        Model.projectionFieldName = (Model.Name "unqualified")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the qualifiers field of hydra.haskell.syntax.QualifiedName+qualifiedNameWithQualifiers :: Typed.TypedTerm Syntax.QualifiedName -> Typed.TypedTerm [Syntax.NamePart] -> Typed.TypedTerm Syntax.QualifiedName+qualifiedNameWithQualifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.QualifiedName"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "qualifiers"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "unqualified"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.QualifiedName"),+              Model.projectionFieldName = (Model.Name "unqualified")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the unqualified field of hydra.haskell.syntax.QualifiedName+qualifiedNameWithUnqualified :: Typed.TypedTerm Syntax.QualifiedName -> Typed.TypedTerm Syntax.NamePart -> Typed.TypedTerm Syntax.QualifiedName+qualifiedNameWithUnqualified original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.QualifiedName"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "qualifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.QualifiedName"),+              Model.projectionFieldName = (Model.Name "qualifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "unqualified"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.haskell.syntax.RecordConstructor+recordConstructor :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.Field] -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.RecordConstructor+recordConstructor name fields comments =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.RecordConstructor"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "fields"),+          Model.fieldTerm = (Typed.unTypedTerm fields)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm comments)}]}))++-- | DSL accessor for the comments field of hydra.haskell.syntax.RecordConstructor+recordConstructorComments :: Typed.TypedTerm Syntax.RecordConstructor -> Typed.TypedTerm (Maybe String)+recordConstructorComments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.RecordConstructor"),+        Model.projectionFieldName = (Model.Name "comments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the fields field of hydra.haskell.syntax.RecordConstructor+recordConstructorFields :: Typed.TypedTerm Syntax.RecordConstructor -> Typed.TypedTerm [Syntax.Field]+recordConstructorFields x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.RecordConstructor"),+        Model.projectionFieldName = (Model.Name "fields")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the name field of hydra.haskell.syntax.RecordConstructor+recordConstructorName :: Typed.TypedTerm Syntax.RecordConstructor -> Typed.TypedTerm Syntax.Name+recordConstructorName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.RecordConstructor"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.RecordConstructor+recordConstructorRecordConstructor :: Typed.TypedName Syntax.RecordConstructor+recordConstructorRecordConstructor = Typed.TypedName (Model.Name "hydra.haskell.syntax.RecordConstructor")++-- | DSL updater for the comments field of hydra.haskell.syntax.RecordConstructor+recordConstructorWithComments :: Typed.TypedTerm Syntax.RecordConstructor -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.RecordConstructor+recordConstructorWithComments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.RecordConstructor"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.RecordConstructor"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "fields"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.RecordConstructor"),+              Model.projectionFieldName = (Model.Name "fields")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the fields field of hydra.haskell.syntax.RecordConstructor+recordConstructorWithFields :: Typed.TypedTerm Syntax.RecordConstructor -> Typed.TypedTerm [Syntax.Field] -> Typed.TypedTerm Syntax.RecordConstructor+recordConstructorWithFields original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.RecordConstructor"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.RecordConstructor"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "fields"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.RecordConstructor"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the name field of hydra.haskell.syntax.RecordConstructor+recordConstructorWithName :: Typed.TypedTerm Syntax.RecordConstructor -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.RecordConstructor+recordConstructorWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.RecordConstructor"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "fields"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.RecordConstructor"),+              Model.projectionFieldName = (Model.Name "fields")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.RecordConstructor"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.haskell.syntax.RecordExpression+recordExpression :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.FieldUpdate] -> Typed.TypedTerm Syntax.RecordExpression+recordExpression name fields =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.RecordExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "fields"),+          Model.fieldTerm = (Typed.unTypedTerm fields)}]}))++-- | DSL accessor for the fields field of hydra.haskell.syntax.RecordExpression+recordExpressionFields :: Typed.TypedTerm Syntax.RecordExpression -> Typed.TypedTerm [Syntax.FieldUpdate]+recordExpressionFields x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.RecordExpression"),+        Model.projectionFieldName = (Model.Name "fields")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the name field of hydra.haskell.syntax.RecordExpression+recordExpressionName :: Typed.TypedTerm Syntax.RecordExpression -> Typed.TypedTerm Syntax.Name+recordExpressionName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.RecordExpression"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.RecordExpression+recordExpressionRecordExpression :: Typed.TypedName Syntax.RecordExpression+recordExpressionRecordExpression = Typed.TypedName (Model.Name "hydra.haskell.syntax.RecordExpression")++-- | DSL updater for the fields field of hydra.haskell.syntax.RecordExpression+recordExpressionWithFields :: Typed.TypedTerm Syntax.RecordExpression -> Typed.TypedTerm [Syntax.FieldUpdate] -> Typed.TypedTerm Syntax.RecordExpression+recordExpressionWithFields original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.RecordExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.RecordExpression"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "fields"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the name field of hydra.haskell.syntax.RecordExpression+recordExpressionWithName :: Typed.TypedTerm Syntax.RecordExpression -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.RecordExpression+recordExpressionWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.RecordExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "fields"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.RecordExpression"),+              Model.projectionFieldName = (Model.Name "fields")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.haskell.syntax.RecordPattern+recordPattern :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.PatternField] -> Typed.TypedTerm Syntax.RecordPattern+recordPattern name fields =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.RecordPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "fields"),+          Model.fieldTerm = (Typed.unTypedTerm fields)}]}))++-- | DSL accessor for the fields field of hydra.haskell.syntax.RecordPattern+recordPatternFields :: Typed.TypedTerm Syntax.RecordPattern -> Typed.TypedTerm [Syntax.PatternField]+recordPatternFields x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.RecordPattern"),+        Model.projectionFieldName = (Model.Name "fields")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the name field of hydra.haskell.syntax.RecordPattern+recordPatternName :: Typed.TypedTerm Syntax.RecordPattern -> Typed.TypedTerm Syntax.Name+recordPatternName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.RecordPattern"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.RecordPattern+recordPatternRecordPattern :: Typed.TypedName Syntax.RecordPattern+recordPatternRecordPattern = Typed.TypedName (Model.Name "hydra.haskell.syntax.RecordPattern")++-- | DSL updater for the fields field of hydra.haskell.syntax.RecordPattern+recordPatternWithFields :: Typed.TypedTerm Syntax.RecordPattern -> Typed.TypedTerm [Syntax.PatternField] -> Typed.TypedTerm Syntax.RecordPattern+recordPatternWithFields original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.RecordPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.RecordPattern"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "fields"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the name field of hydra.haskell.syntax.RecordPattern+recordPatternWithName :: Typed.TypedTerm Syntax.RecordPattern -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.RecordPattern+recordPatternWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.RecordPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "fields"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.RecordPattern"),+              Model.projectionFieldName = (Model.Name "fields")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.haskell.syntax.RecordUpdateExpression+recordUpdateExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm [Syntax.FieldUpdate] -> Typed.TypedTerm Syntax.RecordUpdateExpression+recordUpdateExpression inner fields =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.RecordUpdateExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "inner"),+          Model.fieldTerm = (Typed.unTypedTerm inner)},+        Model.Field {+          Model.fieldName = (Model.Name "fields"),+          Model.fieldTerm = (Typed.unTypedTerm fields)}]}))++-- | DSL accessor for the fields field of hydra.haskell.syntax.RecordUpdateExpression+recordUpdateExpressionFields :: Typed.TypedTerm Syntax.RecordUpdateExpression -> Typed.TypedTerm [Syntax.FieldUpdate]+recordUpdateExpressionFields x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.RecordUpdateExpression"),+        Model.projectionFieldName = (Model.Name "fields")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the inner field of hydra.haskell.syntax.RecordUpdateExpression+recordUpdateExpressionInner :: Typed.TypedTerm Syntax.RecordUpdateExpression -> Typed.TypedTerm Syntax.Expression+recordUpdateExpressionInner x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.RecordUpdateExpression"),+        Model.projectionFieldName = (Model.Name "inner")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.RecordUpdateExpression+recordUpdateExpressionRecordUpdateExpression :: Typed.TypedName Syntax.RecordUpdateExpression+recordUpdateExpressionRecordUpdateExpression = Typed.TypedName (Model.Name "hydra.haskell.syntax.RecordUpdateExpression")++-- | DSL updater for the fields field of hydra.haskell.syntax.RecordUpdateExpression+recordUpdateExpressionWithFields :: Typed.TypedTerm Syntax.RecordUpdateExpression -> Typed.TypedTerm [Syntax.FieldUpdate] -> Typed.TypedTerm Syntax.RecordUpdateExpression+recordUpdateExpressionWithFields original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.RecordUpdateExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "inner"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.RecordUpdateExpression"),+              Model.projectionFieldName = (Model.Name "inner")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "fields"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the inner field of hydra.haskell.syntax.RecordUpdateExpression+recordUpdateExpressionWithInner :: Typed.TypedTerm Syntax.RecordUpdateExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.RecordUpdateExpression+recordUpdateExpressionWithInner original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.RecordUpdateExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "inner"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "fields"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.RecordUpdateExpression"),+              Model.projectionFieldName = (Model.Name "fields")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.haskell.syntax.RightHandSide wrapper+rightHandSide :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.RightHandSide+rightHandSide x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.haskell.syntax.RightHandSide"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.RightHandSide+rightHandSideRightHandSide :: Typed.TypedName Syntax.RightHandSide+rightHandSideRightHandSide = Typed.TypedName (Model.Name "hydra.haskell.syntax.RightHandSide")++-- | DSL constructor for hydra.haskell.syntax.SectionExpression+sectionExpression :: Typed.TypedTerm Syntax.Operator -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SectionExpression+sectionExpression operator expression =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.SectionExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Typed.unTypedTerm operator)},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm expression)}]}))++-- | DSL accessor for the expression field of hydra.haskell.syntax.SectionExpression+sectionExpressionExpression :: Typed.TypedTerm Syntax.SectionExpression -> Typed.TypedTerm Syntax.Expression+sectionExpressionExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.SectionExpression"),+        Model.projectionFieldName = (Model.Name "expression")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the operator field of hydra.haskell.syntax.SectionExpression+sectionExpressionOperator :: Typed.TypedTerm Syntax.SectionExpression -> Typed.TypedTerm Syntax.Operator+sectionExpressionOperator x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.SectionExpression"),+        Model.projectionFieldName = (Model.Name "operator")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.SectionExpression+sectionExpressionSectionExpression :: Typed.TypedName Syntax.SectionExpression+sectionExpressionSectionExpression = Typed.TypedName (Model.Name "hydra.haskell.syntax.SectionExpression")++-- | DSL updater for the expression field of hydra.haskell.syntax.SectionExpression+sectionExpressionWithExpression :: Typed.TypedTerm Syntax.SectionExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SectionExpression+sectionExpressionWithExpression original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.SectionExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.SectionExpression"),+              Model.projectionFieldName = (Model.Name "operator")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the operator field of hydra.haskell.syntax.SectionExpression+sectionExpressionWithOperator :: Typed.TypedTerm Syntax.SectionExpression -> Typed.TypedTerm Syntax.Operator -> Typed.TypedTerm Syntax.SectionExpression+sectionExpressionWithOperator original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.SectionExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.SectionExpression"),+              Model.projectionFieldName = (Model.Name "expression")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.haskell.syntax.SimpleValueBinding+simpleValueBinding :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.RightHandSide -> Typed.TypedTerm (Maybe Syntax.LocalBindings) -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.SimpleValueBinding+simpleValueBinding pattern rhs localBindings comments =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.SimpleValueBinding"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "pattern"),+          Model.fieldTerm = (Typed.unTypedTerm pattern)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm rhs)},+        Model.Field {+          Model.fieldName = (Model.Name "localBindings"),+          Model.fieldTerm = (Typed.unTypedTerm localBindings)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm comments)}]}))++-- | DSL accessor for the comments field of hydra.haskell.syntax.SimpleValueBinding+simpleValueBindingComments :: Typed.TypedTerm Syntax.SimpleValueBinding -> Typed.TypedTerm (Maybe String)+simpleValueBindingComments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.SimpleValueBinding"),+        Model.projectionFieldName = (Model.Name "comments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the localBindings field of hydra.haskell.syntax.SimpleValueBinding+simpleValueBindingLocalBindings :: Typed.TypedTerm Syntax.SimpleValueBinding -> Typed.TypedTerm (Maybe Syntax.LocalBindings)+simpleValueBindingLocalBindings x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.SimpleValueBinding"),+        Model.projectionFieldName = (Model.Name "localBindings")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the pattern field of hydra.haskell.syntax.SimpleValueBinding+simpleValueBindingPattern :: Typed.TypedTerm Syntax.SimpleValueBinding -> Typed.TypedTerm Syntax.Pattern+simpleValueBindingPattern x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.SimpleValueBinding"),+        Model.projectionFieldName = (Model.Name "pattern")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the rhs field of hydra.haskell.syntax.SimpleValueBinding+simpleValueBindingRhs :: Typed.TypedTerm Syntax.SimpleValueBinding -> Typed.TypedTerm Syntax.RightHandSide+simpleValueBindingRhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.SimpleValueBinding"),+        Model.projectionFieldName = (Model.Name "rhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.SimpleValueBinding+simpleValueBindingSimpleValueBinding :: Typed.TypedName Syntax.SimpleValueBinding+simpleValueBindingSimpleValueBinding = Typed.TypedName (Model.Name "hydra.haskell.syntax.SimpleValueBinding")++-- | DSL updater for the comments field of hydra.haskell.syntax.SimpleValueBinding+simpleValueBindingWithComments :: Typed.TypedTerm Syntax.SimpleValueBinding -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.SimpleValueBinding+simpleValueBindingWithComments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.SimpleValueBinding"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "pattern"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.SimpleValueBinding"),+              Model.projectionFieldName = (Model.Name "pattern")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.SimpleValueBinding"),+              Model.projectionFieldName = (Model.Name "rhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "localBindings"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.SimpleValueBinding"),+              Model.projectionFieldName = (Model.Name "localBindings")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the localBindings field of hydra.haskell.syntax.SimpleValueBinding+simpleValueBindingWithLocalBindings :: Typed.TypedTerm Syntax.SimpleValueBinding -> Typed.TypedTerm (Maybe Syntax.LocalBindings) -> Typed.TypedTerm Syntax.SimpleValueBinding+simpleValueBindingWithLocalBindings original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.SimpleValueBinding"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "pattern"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.SimpleValueBinding"),+              Model.projectionFieldName = (Model.Name "pattern")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.SimpleValueBinding"),+              Model.projectionFieldName = (Model.Name "rhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "localBindings"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.SimpleValueBinding"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the pattern field of hydra.haskell.syntax.SimpleValueBinding+simpleValueBindingWithPattern :: Typed.TypedTerm Syntax.SimpleValueBinding -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.SimpleValueBinding+simpleValueBindingWithPattern original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.SimpleValueBinding"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "pattern"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.SimpleValueBinding"),+              Model.projectionFieldName = (Model.Name "rhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "localBindings"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.SimpleValueBinding"),+              Model.projectionFieldName = (Model.Name "localBindings")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.SimpleValueBinding"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the rhs field of hydra.haskell.syntax.SimpleValueBinding+simpleValueBindingWithRhs :: Typed.TypedTerm Syntax.SimpleValueBinding -> Typed.TypedTerm Syntax.RightHandSide -> Typed.TypedTerm Syntax.SimpleValueBinding+simpleValueBindingWithRhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.SimpleValueBinding"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "pattern"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.SimpleValueBinding"),+              Model.projectionFieldName = (Model.Name "pattern")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "localBindings"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.SimpleValueBinding"),+              Model.projectionFieldName = (Model.Name "localBindings")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.SimpleValueBinding"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.haskell.syntax.Statement wrapper+statement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement+statement x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.haskell.syntax.Statement"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.Statement+statementStatement :: Typed.TypedName Syntax.Statement+statementStatement = Typed.TypedName (Model.Name "hydra.haskell.syntax.Statement")++-- | DSL injection for the application variant of hydra.haskell.syntax.Type+typeApplication :: Typed.TypedTerm Syntax.ApplicationType -> Typed.TypedTerm Syntax.Type+typeApplication x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Type"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "application"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the ctx variant of hydra.haskell.syntax.Type+typeCtx :: Typed.TypedTerm Syntax.ConstrainedType -> Typed.TypedTerm Syntax.Type+typeCtx x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Type"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "ctx"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the function variant of hydra.haskell.syntax.Type+typeFunction :: Typed.TypedTerm Syntax.FunctionType -> Typed.TypedTerm Syntax.Type+typeFunction x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Type"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "function"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the infix variant of hydra.haskell.syntax.Type+typeInfix :: Typed.TypedTerm Syntax.InfixType -> Typed.TypedTerm Syntax.Type+typeInfix x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Type"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "infix"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the list variant of hydra.haskell.syntax.Type+typeList :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Type+typeList x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Type"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "list"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.haskell.syntax.TypeSignature+typeSignature :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypeSignature+typeSignature name type_ =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.TypeSignature"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)}]}))++-- | DSL accessor for the name field of hydra.haskell.syntax.TypeSignature+typeSignatureName :: Typed.TypedTerm Syntax.TypeSignature -> Typed.TypedTerm Syntax.Name+typeSignatureName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypeSignature"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.haskell.syntax.TypeSignature+typeSignatureType :: Typed.TypedTerm Syntax.TypeSignature -> Typed.TypedTerm Syntax.Type+typeSignatureType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypeSignature"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.TypeSignature+typeSignatureTypeSignature :: Typed.TypedName Syntax.TypeSignature+typeSignatureTypeSignature = Typed.TypedName (Model.Name "hydra.haskell.syntax.TypeSignature")++-- | DSL updater for the name field of hydra.haskell.syntax.TypeSignature+typeSignatureWithName :: Typed.TypedTerm Syntax.TypeSignature -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.TypeSignature+typeSignatureWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.TypeSignature"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypeSignature"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.haskell.syntax.TypeSignature+typeSignatureWithType :: Typed.TypedTerm Syntax.TypeSignature -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypeSignature+typeSignatureWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.TypeSignature"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypeSignature"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.haskell.syntax.TypeSynonymDeclaration+typeSynonymDeclaration :: Typed.TypedTerm Syntax.DeclarationHead -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.TypeSynonymDeclaration+typeSynonymDeclaration name type_ comments =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm comments)}]}))++-- | DSL accessor for the comments field of hydra.haskell.syntax.TypeSynonymDeclaration+typeSynonymDeclarationComments :: Typed.TypedTerm Syntax.TypeSynonymDeclaration -> Typed.TypedTerm (Maybe String)+typeSynonymDeclarationComments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),+        Model.projectionFieldName = (Model.Name "comments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the name field of hydra.haskell.syntax.TypeSynonymDeclaration+typeSynonymDeclarationName :: Typed.TypedTerm Syntax.TypeSynonymDeclaration -> Typed.TypedTerm Syntax.DeclarationHead+typeSynonymDeclarationName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.haskell.syntax.TypeSynonymDeclaration+typeSynonymDeclarationType :: Typed.TypedTerm Syntax.TypeSynonymDeclaration -> Typed.TypedTerm Syntax.Type+typeSynonymDeclarationType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.TypeSynonymDeclaration+typeSynonymDeclarationTypeSynonymDeclaration :: Typed.TypedName Syntax.TypeSynonymDeclaration+typeSynonymDeclarationTypeSynonymDeclaration = Typed.TypedName (Model.Name "hydra.haskell.syntax.TypeSynonymDeclaration")++-- | DSL updater for the comments field of hydra.haskell.syntax.TypeSynonymDeclaration+typeSynonymDeclarationWithComments :: Typed.TypedTerm Syntax.TypeSynonymDeclaration -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.TypeSynonymDeclaration+typeSynonymDeclarationWithComments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the name field of hydra.haskell.syntax.TypeSynonymDeclaration+typeSynonymDeclarationWithName :: Typed.TypedTerm Syntax.TypeSynonymDeclaration -> Typed.TypedTerm Syntax.DeclarationHead -> Typed.TypedTerm Syntax.TypeSynonymDeclaration+typeSynonymDeclarationWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.haskell.syntax.TypeSynonymDeclaration+typeSynonymDeclarationWithType :: Typed.TypedTerm Syntax.TypeSynonymDeclaration -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypeSynonymDeclaration+typeSynonymDeclarationWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypeSynonymDeclaration"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the tuple variant of hydra.haskell.syntax.Type+typeTuple :: Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.Type+typeTuple x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Type"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "tuple"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.haskell.syntax.Type+typeType :: Typed.TypedName Syntax.Type+typeType = Typed.TypedName (Model.Name "hydra.haskell.syntax.Type")++-- | DSL injection for the variable variant of hydra.haskell.syntax.Type+typeVariable :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Type+typeVariable x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.Type"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "variable"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.haskell.syntax.TypedBinding+typedBinding :: Typed.TypedTerm Syntax.TypeSignature -> Typed.TypedTerm Syntax.ValueBinding -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.TypedBinding+typedBinding typeSignature valueBinding comments =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.TypedBinding"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeSignature"),+          Model.fieldTerm = (Typed.unTypedTerm typeSignature)},+        Model.Field {+          Model.fieldName = (Model.Name "valueBinding"),+          Model.fieldTerm = (Typed.unTypedTerm valueBinding)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm comments)}]}))++-- | DSL accessor for the comments field of hydra.haskell.syntax.TypedBinding+typedBindingComments :: Typed.TypedTerm Syntax.TypedBinding -> Typed.TypedTerm (Maybe String)+typedBindingComments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypedBinding"),+        Model.projectionFieldName = (Model.Name "comments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the typeSignature field of hydra.haskell.syntax.TypedBinding+typedBindingTypeSignature :: Typed.TypedTerm Syntax.TypedBinding -> Typed.TypedTerm Syntax.TypeSignature+typedBindingTypeSignature x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypedBinding"),+        Model.projectionFieldName = (Model.Name "typeSignature")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.TypedBinding+typedBindingTypedBinding :: Typed.TypedName Syntax.TypedBinding+typedBindingTypedBinding = Typed.TypedName (Model.Name "hydra.haskell.syntax.TypedBinding")++-- | DSL accessor for the valueBinding field of hydra.haskell.syntax.TypedBinding+typedBindingValueBinding :: Typed.TypedTerm Syntax.TypedBinding -> Typed.TypedTerm Syntax.ValueBinding+typedBindingValueBinding x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypedBinding"),+        Model.projectionFieldName = (Model.Name "valueBinding")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the comments field of hydra.haskell.syntax.TypedBinding+typedBindingWithComments :: Typed.TypedTerm Syntax.TypedBinding -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.TypedBinding+typedBindingWithComments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.TypedBinding"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeSignature"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypedBinding"),+              Model.projectionFieldName = (Model.Name "typeSignature")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "valueBinding"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypedBinding"),+              Model.projectionFieldName = (Model.Name "valueBinding")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the typeSignature field of hydra.haskell.syntax.TypedBinding+typedBindingWithTypeSignature :: Typed.TypedTerm Syntax.TypedBinding -> Typed.TypedTerm Syntax.TypeSignature -> Typed.TypedTerm Syntax.TypedBinding+typedBindingWithTypeSignature original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.TypedBinding"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeSignature"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "valueBinding"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypedBinding"),+              Model.projectionFieldName = (Model.Name "valueBinding")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypedBinding"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the valueBinding field of hydra.haskell.syntax.TypedBinding+typedBindingWithValueBinding :: Typed.TypedTerm Syntax.TypedBinding -> Typed.TypedTerm Syntax.ValueBinding -> Typed.TypedTerm Syntax.TypedBinding+typedBindingWithValueBinding original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.TypedBinding"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeSignature"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypedBinding"),+              Model.projectionFieldName = (Model.Name "typeSignature")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "valueBinding"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypedBinding"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.haskell.syntax.TypedExpression+typedExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypedExpression+typedExpression inner type_ =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.TypedExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "inner"),+          Model.fieldTerm = (Typed.unTypedTerm inner)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)}]}))++-- | DSL accessor for the inner field of hydra.haskell.syntax.TypedExpression+typedExpressionInner :: Typed.TypedTerm Syntax.TypedExpression -> Typed.TypedTerm Syntax.Expression+typedExpressionInner x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypedExpression"),+        Model.projectionFieldName = (Model.Name "inner")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.haskell.syntax.TypedExpression+typedExpressionType :: Typed.TypedTerm Syntax.TypedExpression -> Typed.TypedTerm Syntax.Type+typedExpressionType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypedExpression"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.TypedExpression+typedExpressionTypedExpression :: Typed.TypedName Syntax.TypedExpression+typedExpressionTypedExpression = Typed.TypedName (Model.Name "hydra.haskell.syntax.TypedExpression")++-- | DSL updater for the inner field of hydra.haskell.syntax.TypedExpression+typedExpressionWithInner :: Typed.TypedTerm Syntax.TypedExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.TypedExpression+typedExpressionWithInner original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.TypedExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "inner"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypedExpression"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.haskell.syntax.TypedExpression+typedExpressionWithType :: Typed.TypedTerm Syntax.TypedExpression -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypedExpression+typedExpressionWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.TypedExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "inner"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypedExpression"),+              Model.projectionFieldName = (Model.Name "inner")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.haskell.syntax.TypedPattern+typedPattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypedPattern+typedPattern inner type_ =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.TypedPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "inner"),+          Model.fieldTerm = (Typed.unTypedTerm inner)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)}]}))++-- | DSL accessor for the inner field of hydra.haskell.syntax.TypedPattern+typedPatternInner :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.Pattern+typedPatternInner x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypedPattern"),+        Model.projectionFieldName = (Model.Name "inner")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.haskell.syntax.TypedPattern+typedPatternType :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.Type+typedPatternType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypedPattern"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.TypedPattern+typedPatternTypedPattern :: Typed.TypedName Syntax.TypedPattern+typedPatternTypedPattern = Typed.TypedName (Model.Name "hydra.haskell.syntax.TypedPattern")++-- | DSL updater for the inner field of hydra.haskell.syntax.TypedPattern+typedPatternWithInner :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.TypedPattern+typedPatternWithInner original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.TypedPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "inner"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypedPattern"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.haskell.syntax.TypedPattern+typedPatternWithType :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypedPattern+typedPatternWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.haskell.syntax.TypedPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "inner"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.haskell.syntax.TypedPattern"),+              Model.projectionFieldName = (Model.Name "inner")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL accessor for the body of hydra.haskell.syntax.CaseRhs+unCaseRhs :: Typed.TypedTerm Syntax.CaseRhs -> Typed.TypedTerm Syntax.Expression+unCaseRhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.haskell.syntax.CaseRhs")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.haskell.syntax.DerivingClause+unDerivingClause :: Typed.TypedTerm Syntax.DerivingClause -> Typed.TypedTerm [Syntax.Name]+unDerivingClause x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.haskell.syntax.DerivingClause")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.haskell.syntax.LocalBindings+unLocalBindings :: Typed.TypedTerm Syntax.LocalBindings -> Typed.TypedTerm [Syntax.LocalBinding]+unLocalBindings x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.haskell.syntax.LocalBindings")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.haskell.syntax.ModuleName+unModuleName :: Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm String+unModuleName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.haskell.syntax.ModuleName")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.haskell.syntax.NamePart+unNamePart :: Typed.TypedTerm Syntax.NamePart -> Typed.TypedTerm String+unNamePart x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.haskell.syntax.NamePart")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.haskell.syntax.RightHandSide+unRightHandSide :: Typed.TypedTerm Syntax.RightHandSide -> Typed.TypedTerm Syntax.Expression+unRightHandSide x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.haskell.syntax.RightHandSide")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.haskell.syntax.Statement+unStatement :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.Expression+unStatement x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.haskell.syntax.Statement")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.haskell.syntax.Variable+unVariable :: Typed.TypedTerm Syntax.Variable -> Typed.TypedTerm Syntax.Name+unVariable x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.haskell.syntax.Variable")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL injection for the simple variant of hydra.haskell.syntax.ValueBinding+valueBindingSimple :: Typed.TypedTerm Syntax.SimpleValueBinding -> Typed.TypedTerm Syntax.ValueBinding+valueBindingSimple x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.haskell.syntax.ValueBinding"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "simple"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.haskell.syntax.ValueBinding+valueBindingValueBinding :: Typed.TypedName Syntax.ValueBinding+valueBindingValueBinding = Typed.TypedName (Model.Name "hydra.haskell.syntax.ValueBinding")++-- | DSL constructor for the hydra.haskell.syntax.Variable wrapper+variable :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Variable+variable x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.haskell.syntax.Variable"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.haskell.syntax.Variable+variableVariable :: Typed.TypedName Syntax.Variable+variableVariable = Typed.TypedName (Model.Name "hydra.haskell.syntax.Variable")
src/main/haskell/Hydra/Haskell/Environment.hs view
@@ -4,7 +4,7 @@  module Hydra.Haskell.Environment where -import qualified Hydra.Core as Core+import qualified Hydra.Core.Model as Model import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import Data.Void@@ -24,14 +24,14 @@     haskellModuleMetadataUsesVoid :: Bool}   deriving (Eq, Ord, Read, Show) -_HaskellModuleMetadata = Core.Name "hydra.haskell.environment.HaskellModuleMetadata"+_HaskellModuleMetadata = Model.Name "hydra.haskell.environment.HaskellModuleMetadata" -_HaskellModuleMetadata_usesByteString = Core.Name "usesByteString"+_HaskellModuleMetadata_usesByteString = Model.Name "usesByteString" -_HaskellModuleMetadata_usesInt = Core.Name "usesInt"+_HaskellModuleMetadata_usesInt = Model.Name "usesInt" -_HaskellModuleMetadata_usesMap = Core.Name "usesMap"+_HaskellModuleMetadata_usesMap = Model.Name "usesMap" -_HaskellModuleMetadata_usesSet = Core.Name "usesSet"+_HaskellModuleMetadata_usesSet = Model.Name "usesSet" -_HaskellModuleMetadata_usesVoid = Core.Name "usesVoid"+_HaskellModuleMetadata_usesVoid = Model.Name "usesVoid"
src/main/haskell/Hydra/Haskell/Language.hs view
@@ -4,37 +4,39 @@  module Hydra.Haskell.Language where -import qualified Hydra.Ast as Ast-import qualified Hydra.Coders as Coders-import qualified Hydra.Core as Core-import qualified Hydra.Docs as Docs-import qualified Hydra.Error.Checking as Checking-import qualified Hydra.Error.Core as ErrorCore-import qualified Hydra.Error.File as ErrorFile-import qualified Hydra.Error.Packaging as ErrorPackaging-import qualified Hydra.Error.System as ErrorSystem-import qualified Hydra.Errors as Errors-import qualified Hydra.File as File-import qualified Hydra.Graph as Graph-import qualified Hydra.Json.Model as Model-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists-import qualified Hydra.Overlay.Haskell.Lib.Sets as Sets-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Parsing as Parsing-import qualified Hydra.Paths as Paths-import qualified Hydra.Query as Query-import qualified Hydra.Regex as Regex-import qualified Hydra.Relational as Relational-import qualified Hydra.System as System-import qualified Hydra.Tabular as Tabular-import qualified Hydra.Testing as Testing-import qualified Hydra.Time as Time-import qualified Hydra.Topology as Topology-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import qualified Hydra.Util as Util-import qualified Hydra.Validation as Validation-import qualified Hydra.Variants as Variants+import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Diff as Diff+import qualified Hydra.Core.Docs as Docs+import qualified Hydra.Core.Error.Checking as Checking+import qualified Hydra.Core.Error.File as ErrorFile+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Error.System as ErrorSystem+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.File as File+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists+import qualified Hydra.Core.Overlay.Haskell.Lib.Sets as Sets+import qualified Hydra.Core.Markdown as Markdown+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Regex as Regex+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.System as System+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Time as Time+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variants as Variants import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import Data.Void@@ -79,15 +81,15 @@           Variants.LiteralVariantString]     floatTypes =         Sets.fromList [-          Core.FloatTypeFloat32,-          Core.FloatTypeFloat64]+          Model.FloatTypeFloat32,+          Model.FloatTypeFloat64]     integerTypes =         Sets.fromList [-          Core.IntegerTypeBigint,-          Core.IntegerTypeInt8,-          Core.IntegerTypeInt16,-          Core.IntegerTypeInt32,-          Core.IntegerTypeInt64]+          Model.IntegerTypeBigint,+          Model.IntegerTypeInt8,+          Model.IntegerTypeInt16,+          Model.IntegerTypeInt32,+          Model.IntegerTypeInt64]     termVariants =         Sets.fromList [           Variants.TermVariantAnnotated,
src/main/haskell/Hydra/Haskell/Operators.hs view
@@ -4,37 +4,39 @@  module Hydra.Haskell.Operators where -import qualified Hydra.Ast as Ast-import qualified Hydra.Coders as Coders-import qualified Hydra.Core as Core-import qualified Hydra.Docs as Docs-import qualified Hydra.Error.Checking as Checking-import qualified Hydra.Error.Core as ErrorCore-import qualified Hydra.Error.File as ErrorFile-import qualified Hydra.Error.Packaging as ErrorPackaging-import qualified Hydra.Error.System as ErrorSystem-import qualified Hydra.Errors as Errors-import qualified Hydra.File as File-import qualified Hydra.Graph as Graph-import qualified Hydra.Json.Model as Model-import qualified Hydra.Overlay.Haskell.Lib.Math as Math-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Parsing as Parsing-import qualified Hydra.Paths as Paths-import qualified Hydra.Query as Query-import qualified Hydra.Regex as Regex-import qualified Hydra.Relational as Relational-import qualified Hydra.Serialization as Serialization-import qualified Hydra.System as System-import qualified Hydra.Tabular as Tabular-import qualified Hydra.Testing as Testing-import qualified Hydra.Time as Time-import qualified Hydra.Topology as Topology-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import qualified Hydra.Util as Util-import qualified Hydra.Validation as Validation-import qualified Hydra.Variants as Variants+import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Diff as Diff+import qualified Hydra.Core.Docs as Docs+import qualified Hydra.Core.Error.Checking as Checking+import qualified Hydra.Core.Error.File as ErrorFile+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Error.System as ErrorSystem+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.File as File+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Overlay.Haskell.Lib.Math as Math+import qualified Hydra.Core.Markdown as Markdown+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Regex as Regex+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.Serialization as Serialization+import qualified Hydra.Core.System as System+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Time as Time+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variants as Variants import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import Data.Void
src/main/haskell/Hydra/Haskell/Serde.hs view
@@ -8,49 +8,51 @@  module Hydra.Haskell.Serde where -import qualified Hydra.Ast as Ast-import qualified Hydra.Coders as Coders-import qualified Hydra.Constants as Constants-import qualified Hydra.Core as Core-import qualified Hydra.Docs as Docs-import qualified Hydra.Error.Checking as Checking-import qualified Hydra.Error.Core as ErrorCore-import qualified Hydra.Error.File as ErrorFile-import qualified Hydra.Error.Packaging as ErrorPackaging-import qualified Hydra.Error.System as ErrorSystem-import qualified Hydra.Errors as Errors-import qualified Hydra.File as File-import qualified Hydra.Formatting as Formatting-import qualified Hydra.Graph as Graph+import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Constants as Constants+import qualified Hydra.Core.Diff as Diff+import qualified Hydra.Core.Docs as Docs+import qualified Hydra.Core.Error.Checking as Checking+import qualified Hydra.Core.Error.File as ErrorFile+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Error.System as ErrorSystem+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.File as File+import qualified Hydra.Core.Formatting as Formatting+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Overlay.Haskell.Lib.Equality as Equality+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists+import qualified Hydra.Core.Overlay.Haskell.Lib.Literals as Literals+import qualified Hydra.Core.Overlay.Haskell.Lib.Logic as Logic+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals+import qualified Hydra.Core.Overlay.Haskell.Lib.Ordering as Ordering+import qualified Hydra.Core.Overlay.Haskell.Lib.Strings as Strings+import qualified Hydra.Core.Markdown as Markdown+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Names as Names+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Print.Docs as PrintDocs+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Regex as Regex+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.Serialization as Serialization+import qualified Hydra.Core.System as System+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Time as Time+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variants as Variants import qualified Hydra.Haskell.Operators as Operators import qualified Hydra.Haskell.Syntax as Syntax-import qualified Hydra.Json.Model as Model-import qualified Hydra.Overlay.Haskell.Lib.Equality as Equality-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists-import qualified Hydra.Overlay.Haskell.Lib.Literals as Literals-import qualified Hydra.Overlay.Haskell.Lib.Logic as Logic-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals-import qualified Hydra.Overlay.Haskell.Lib.Ordering as Ordering-import qualified Hydra.Overlay.Haskell.Lib.Strings as Strings-import qualified Hydra.Names as Names-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Parsing as Parsing-import qualified Hydra.Paths as Paths-import qualified Hydra.Print.Docs as PrintDocs-import qualified Hydra.Query as Query-import qualified Hydra.Regex as Regex-import qualified Hydra.Relational as Relational-import qualified Hydra.Serialization as Serialization-import qualified Hydra.System as System-import qualified Hydra.Tabular as Tabular-import qualified Hydra.Testing as Testing-import qualified Hydra.Time as Time-import qualified Hydra.Topology as Topology-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import qualified Hydra.Util as Util-import qualified Hydra.Validation as Validation-import qualified Hydra.Variants as Variants import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import Data.Void
src/main/haskell/Hydra/Haskell/Syntax.hs view
@@ -4,7 +4,7 @@  module Hydra.Haskell.Syntax where -import qualified Hydra.Core as Core+import qualified Hydra.Core.Model as Model import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import Data.Void@@ -20,13 +20,13 @@     alternativeBinds :: (Maybe LocalBindings)}   deriving (Eq, Ord, Read, Show) -_Alternative = Core.Name "hydra.haskell.syntax.Alternative"+_Alternative = Model.Name "hydra.haskell.syntax.Alternative" -_Alternative_pattern = Core.Name "pattern"+_Alternative_pattern = Model.Name "pattern" -_Alternative_rhs = Core.Name "rhs"+_Alternative_rhs = Model.Name "rhs" -_Alternative_binds = Core.Name "binds"+_Alternative_binds = Model.Name "binds"  -- | An application-style declaration head data ApplicationDeclarationHead =@@ -37,11 +37,11 @@     applicationDeclarationHeadOperand :: Variable}   deriving (Eq, Ord, Read, Show) -_ApplicationDeclarationHead = Core.Name "hydra.haskell.syntax.ApplicationDeclarationHead"+_ApplicationDeclarationHead = Model.Name "hydra.haskell.syntax.ApplicationDeclarationHead" -_ApplicationDeclarationHead_function = Core.Name "function"+_ApplicationDeclarationHead_function = Model.Name "function" -_ApplicationDeclarationHead_operand = Core.Name "operand"+_ApplicationDeclarationHead_operand = Model.Name "operand"  -- | An application expression data ApplicationExpression =@@ -52,11 +52,11 @@     applicationExpressionArgument :: Expression}   deriving (Eq, Ord, Read, Show) -_ApplicationExpression = Core.Name "hydra.haskell.syntax.ApplicationExpression"+_ApplicationExpression = Model.Name "hydra.haskell.syntax.ApplicationExpression" -_ApplicationExpression_function = Core.Name "function"+_ApplicationExpression_function = Model.Name "function" -_ApplicationExpression_argument = Core.Name "argument"+_ApplicationExpression_argument = Model.Name "argument"  -- | An application pattern data ApplicationPattern =@@ -67,11 +67,11 @@     applicationPatternArgs :: [Pattern]}   deriving (Eq, Ord, Read, Show) -_ApplicationPattern = Core.Name "hydra.haskell.syntax.ApplicationPattern"+_ApplicationPattern = Model.Name "hydra.haskell.syntax.ApplicationPattern" -_ApplicationPattern_name = Core.Name "name"+_ApplicationPattern_name = Model.Name "name" -_ApplicationPattern_args = Core.Name "args"+_ApplicationPattern_args = Model.Name "args"  -- | An application type data ApplicationType =@@ -82,11 +82,11 @@     applicationTypeArgument :: Type}   deriving (Eq, Ord, Read, Show) -_ApplicationType = Core.Name "hydra.haskell.syntax.ApplicationType"+_ApplicationType = Model.Name "hydra.haskell.syntax.ApplicationType" -_ApplicationType_context = Core.Name "context"+_ApplicationType_context = Model.Name "context" -_ApplicationType_argument = Core.Name "argument"+_ApplicationType_argument = Model.Name "argument"  -- | An 'as' pattern data AsPattern =@@ -97,11 +97,11 @@     asPatternInner :: Pattern}   deriving (Eq, Ord, Read, Show) -_AsPattern = Core.Name "hydra.haskell.syntax.AsPattern"+_AsPattern = Model.Name "hydra.haskell.syntax.AsPattern" -_AsPattern_name = Core.Name "name"+_AsPattern_name = Model.Name "name" -_AsPattern_inner = Core.Name "inner"+_AsPattern_inner = Model.Name "inner"  -- | A case expression data CaseExpression =@@ -112,11 +112,11 @@     caseExpressionAlternatives :: [Alternative]}   deriving (Eq, Ord, Read, Show) -_CaseExpression = Core.Name "hydra.haskell.syntax.CaseExpression"+_CaseExpression = Model.Name "hydra.haskell.syntax.CaseExpression" -_CaseExpression_case = Core.Name "case"+_CaseExpression_case = Model.Name "case" -_CaseExpression_alternatives = Core.Name "alternatives"+_CaseExpression_alternatives = Model.Name "alternatives"  -- | The right-hand side of a pattern-matching alternative newtype CaseRhs =@@ -124,7 +124,7 @@     unCaseRhs :: Expression}   deriving (Eq, Ord, Read, Show) -_CaseRhs = Core.Name "hydra.haskell.syntax.CaseRhs"+_CaseRhs = Model.Name "hydra.haskell.syntax.CaseRhs"  -- | A class constraint data ClassConstraint =@@ -135,11 +135,11 @@     classConstraintTypes :: [Type]}   deriving (Eq, Ord, Read, Show) -_ClassConstraint = Core.Name "hydra.haskell.syntax.ClassConstraint"+_ClassConstraint = Model.Name "hydra.haskell.syntax.ClassConstraint" -_ClassConstraint_name = Core.Name "name"+_ClassConstraint_name = Model.Name "name" -_ClassConstraint_types = Core.Name "types"+_ClassConstraint_types = Model.Name "types"  -- | A type with a context (type class constraints) data ConstrainedType =@@ -150,11 +150,11 @@     constrainedTypeType :: Type}   deriving (Eq, Ord, Read, Show) -_ConstrainedType = Core.Name "hydra.haskell.syntax.ConstrainedType"+_ConstrainedType = Model.Name "hydra.haskell.syntax.ConstrainedType" -_ConstrainedType_ctx = Core.Name "ctx"+_ConstrainedType_ctx = Model.Name "ctx" -_ConstrainedType_type = Core.Name "type"+_ConstrainedType_type = Model.Name "type"  -- | A type constraint data Constraint =@@ -164,11 +164,11 @@   ConstraintTuple [Constraint]   deriving (Eq, Ord, Read, Show) -_Constraint = Core.Name "hydra.haskell.syntax.Constraint"+_Constraint = Model.Name "hydra.haskell.syntax.Constraint" -_Constraint_class = Core.Name "class"+_Constraint_class = Model.Name "class" -_Constraint_tuple = Core.Name "tuple"+_Constraint_tuple = Model.Name "tuple"  -- | A data constructor data Constructor =@@ -178,11 +178,11 @@   ConstructorRecord RecordConstructor   deriving (Eq, Ord, Read, Show) -_Constructor = Core.Name "hydra.haskell.syntax.Constructor"+_Constructor = Model.Name "hydra.haskell.syntax.Constructor" -_Constructor_ordinary = Core.Name "ordinary"+_Constructor_ordinary = Model.Name "ordinary" -_Constructor_record = Core.Name "record"+_Constructor_record = Model.Name "record"  -- | A data type declaration data DataDeclaration =@@ -201,19 +201,19 @@     dataDeclarationComments :: (Maybe String)}   deriving (Eq, Ord, Read, Show) -_DataDeclaration = Core.Name "hydra.haskell.syntax.DataDeclaration"+_DataDeclaration = Model.Name "hydra.haskell.syntax.DataDeclaration" -_DataDeclaration_keyword = Core.Name "keyword"+_DataDeclaration_keyword = Model.Name "keyword" -_DataDeclaration_context = Core.Name "context"+_DataDeclaration_context = Model.Name "context" -_DataDeclaration_head = Core.Name "head"+_DataDeclaration_head = Model.Name "head" -_DataDeclaration_constructors = Core.Name "constructors"+_DataDeclaration_constructors = Model.Name "constructors" -_DataDeclaration_deriving = Core.Name "deriving"+_DataDeclaration_deriving = Model.Name "deriving" -_DataDeclaration_comments = Core.Name "comments"+_DataDeclaration_comments = Model.Name "comments"  -- | The 'data' versus 'newtype keyword data DataKeyword =@@ -221,11 +221,11 @@   DataKeywordNewtype   deriving (Eq, Ord, Read, Show) -_DataKeyword = Core.Name "hydra.haskell.syntax.DataKeyword"+_DataKeyword = Model.Name "hydra.haskell.syntax.DataKeyword" -_DataKeyword_data = Core.Name "data"+_DataKeyword_data = Model.Name "data" -_DataKeyword_newtype = Core.Name "newtype"+_DataKeyword_newtype = Model.Name "newtype"  -- | A data or value declaration data Declaration =@@ -239,15 +239,15 @@   DeclarationTypedBinding TypedBinding   deriving (Eq, Ord, Read, Show) -_Declaration = Core.Name "hydra.haskell.syntax.Declaration"+_Declaration = Model.Name "hydra.haskell.syntax.Declaration" -_Declaration_data = Core.Name "data"+_Declaration_data = Model.Name "data" -_Declaration_type = Core.Name "type"+_Declaration_type = Model.Name "type" -_Declaration_valueBinding = Core.Name "valueBinding"+_Declaration_valueBinding = Model.Name "valueBinding" -_Declaration_typedBinding = Core.Name "typedBinding"+_Declaration_typedBinding = Model.Name "typedBinding"  -- | The left-hand side of a declaration data DeclarationHead =@@ -257,11 +257,11 @@   DeclarationHeadSimple Name   deriving (Eq, Ord, Read, Show) -_DeclarationHead = Core.Name "hydra.haskell.syntax.DeclarationHead"+_DeclarationHead = Model.Name "hydra.haskell.syntax.DeclarationHead" -_DeclarationHead_application = Core.Name "application"+_DeclarationHead_application = Model.Name "application" -_DeclarationHead_simple = Core.Name "simple"+_DeclarationHead_simple = Model.Name "simple"  -- | A 'deriving' clause newtype DerivingClause =@@ -269,7 +269,7 @@     unDerivingClause :: [Name]}   deriving (Eq, Ord, Read, Show) -_DerivingClause = Core.Name "hydra.haskell.syntax.DerivingClause"+_DerivingClause = Model.Name "hydra.haskell.syntax.DerivingClause"  -- | An export statement data Export =@@ -279,11 +279,11 @@   ExportModule ModuleName   deriving (Eq, Ord, Read, Show) -_Export = Core.Name "hydra.haskell.syntax.Export"+_Export = Model.Name "hydra.haskell.syntax.Export" -_Export_declaration = Core.Name "declaration"+_Export_declaration = Model.Name "declaration" -_Export_module = Core.Name "module"+_Export_module = Model.Name "module"  -- | A data expression data Expression =@@ -321,39 +321,39 @@   ExpressionVariable Name   deriving (Eq, Ord, Read, Show) -_Expression = Core.Name "hydra.haskell.syntax.Expression"+_Expression = Model.Name "hydra.haskell.syntax.Expression" -_Expression_application = Core.Name "application"+_Expression_application = Model.Name "application" -_Expression_case = Core.Name "case"+_Expression_case = Model.Name "case" -_Expression_constructRecord = Core.Name "constructRecord"+_Expression_constructRecord = Model.Name "constructRecord" -_Expression_do = Core.Name "do"+_Expression_do = Model.Name "do" -_Expression_if = Core.Name "if"+_Expression_if = Model.Name "if" -_Expression_infixApplication = Core.Name "infixApplication"+_Expression_infixApplication = Model.Name "infixApplication" -_Expression_literal = Core.Name "literal"+_Expression_literal = Model.Name "literal" -_Expression_lambda = Core.Name "lambda"+_Expression_lambda = Model.Name "lambda" -_Expression_leftSection = Core.Name "leftSection"+_Expression_leftSection = Model.Name "leftSection" -_Expression_let = Core.Name "let"+_Expression_let = Model.Name "let" -_Expression_list = Core.Name "list"+_Expression_list = Model.Name "list" -_Expression_rightSection = Core.Name "rightSection"+_Expression_rightSection = Model.Name "rightSection" -_Expression_tuple = Core.Name "tuple"+_Expression_tuple = Model.Name "tuple" -_Expression_typeSignature = Core.Name "typeSignature"+_Expression_typeSignature = Model.Name "typeSignature" -_Expression_updateRecord = Core.Name "updateRecord"+_Expression_updateRecord = Model.Name "updateRecord" -_Expression_variable = Core.Name "variable"+_Expression_variable = Model.Name "variable"  -- | A field (name/type pair) data Field =@@ -366,13 +366,13 @@     fieldComments :: (Maybe String)}   deriving (Eq, Ord, Read, Show) -_Field = Core.Name "hydra.haskell.syntax.Field"+_Field = Model.Name "hydra.haskell.syntax.Field" -_Field_name = Core.Name "name"+_Field_name = Model.Name "name" -_Field_type = Core.Name "type"+_Field_type = Model.Name "type" -_Field_comments = Core.Name "comments"+_Field_comments = Model.Name "comments"  -- | A field name and value data FieldUpdate =@@ -383,11 +383,11 @@     fieldUpdateValue :: Expression}   deriving (Eq, Ord, Read, Show) -_FieldUpdate = Core.Name "hydra.haskell.syntax.FieldUpdate"+_FieldUpdate = Model.Name "hydra.haskell.syntax.FieldUpdate" -_FieldUpdate_name = Core.Name "name"+_FieldUpdate_name = Model.Name "name" -_FieldUpdate_value = Core.Name "value"+_FieldUpdate_value = Model.Name "value"  -- | A function type data FunctionType =@@ -398,11 +398,11 @@     functionTypeCodomain :: Type}   deriving (Eq, Ord, Read, Show) -_FunctionType = Core.Name "hydra.haskell.syntax.FunctionType"+_FunctionType = Model.Name "hydra.haskell.syntax.FunctionType" -_FunctionType_domain = Core.Name "domain"+_FunctionType_domain = Model.Name "domain" -_FunctionType_codomain = Core.Name "codomain"+_FunctionType_codomain = Model.Name "codomain"  -- | An 'if' expression data IfExpression =@@ -415,13 +415,13 @@     ifExpressionElse :: Expression}   deriving (Eq, Ord, Read, Show) -_IfExpression = Core.Name "hydra.haskell.syntax.IfExpression"+_IfExpression = Model.Name "hydra.haskell.syntax.IfExpression" -_IfExpression_condition = Core.Name "condition"+_IfExpression_condition = Model.Name "condition" -_IfExpression_then = Core.Name "then"+_IfExpression_then = Model.Name "then" -_IfExpression_else = Core.Name "else"+_IfExpression_else = Model.Name "else"  -- | An import statement data Import =@@ -436,15 +436,15 @@     importSpec :: (Maybe ImportSpec)}   deriving (Eq, Ord, Read, Show) -_Import = Core.Name "hydra.haskell.syntax.Import"+_Import = Model.Name "hydra.haskell.syntax.Import" -_Import_qualified = Core.Name "qualified"+_Import_qualified = Model.Name "qualified" -_Import_module = Core.Name "module"+_Import_module = Model.Name "module" -_Import_as = Core.Name "as"+_Import_as = Model.Name "as" -_Import_spec = Core.Name "spec"+_Import_spec = Model.Name "spec"  -- | A subspecification within an import/export data ImportExportSubspec =@@ -454,11 +454,11 @@   ImportExportSubspecList [Name]   deriving (Eq, Ord, Read, Show) -_ImportExportSubspec = Core.Name "hydra.haskell.syntax.ImportExportSubspec"+_ImportExportSubspec = Model.Name "hydra.haskell.syntax.ImportExportSubspec" -_ImportExportSubspec_all = Core.Name "all"+_ImportExportSubspec_all = Model.Name "all" -_ImportExportSubspec_list = Core.Name "list"+_ImportExportSubspec_list = Model.Name "list"  -- | An import modifier ('pattern' or 'type') data ImportModifier =@@ -466,11 +466,11 @@   ImportModifierType   deriving (Eq, Ord, Read, Show) -_ImportModifier = Core.Name "hydra.haskell.syntax.ImportModifier"+_ImportModifier = Model.Name "hydra.haskell.syntax.ImportModifier" -_ImportModifier_pattern = Core.Name "pattern"+_ImportModifier_pattern = Model.Name "pattern" -_ImportModifier_type = Core.Name "type"+_ImportModifier_type = Model.Name "type"  -- | An import specification data ImportSpec =@@ -480,11 +480,11 @@   ImportSpecHiding [NamedImportExport]   deriving (Eq, Ord, Read, Show) -_ImportSpec = Core.Name "hydra.haskell.syntax.ImportSpec"+_ImportSpec = Model.Name "hydra.haskell.syntax.ImportSpec" -_ImportSpec_list = Core.Name "list"+_ImportSpec_list = Model.Name "list" -_ImportSpec_hiding = Core.Name "hiding"+_ImportSpec_hiding = Model.Name "hiding"  -- | An infix application expression data InfixExpression =@@ -497,13 +497,13 @@     infixExpressionRhs :: Expression}   deriving (Eq, Ord, Read, Show) -_InfixExpression = Core.Name "hydra.haskell.syntax.InfixExpression"+_InfixExpression = Model.Name "hydra.haskell.syntax.InfixExpression" -_InfixExpression_lhs = Core.Name "lhs"+_InfixExpression_lhs = Model.Name "lhs" -_InfixExpression_operator = Core.Name "operator"+_InfixExpression_operator = Model.Name "operator" -_InfixExpression_rhs = Core.Name "rhs"+_InfixExpression_rhs = Model.Name "rhs"  -- | An infix type application data InfixType =@@ -516,13 +516,13 @@     infixTypeRhs :: Type}   deriving (Eq, Ord, Read, Show) -_InfixType = Core.Name "hydra.haskell.syntax.InfixType"+_InfixType = Model.Name "hydra.haskell.syntax.InfixType" -_InfixType_lhs = Core.Name "lhs"+_InfixType_lhs = Model.Name "lhs" -_InfixType_operator = Core.Name "operator"+_InfixType_operator = Model.Name "operator" -_InfixType_rhs = Core.Name "rhs"+_InfixType_rhs = Model.Name "rhs"  -- | A lambda expression data LambdaExpression =@@ -533,11 +533,11 @@     lambdaExpressionInner :: Expression}   deriving (Eq, Ord, Read, Show) -_LambdaExpression = Core.Name "hydra.haskell.syntax.LambdaExpression"+_LambdaExpression = Model.Name "hydra.haskell.syntax.LambdaExpression" -_LambdaExpression_bindings = Core.Name "bindings"+_LambdaExpression_bindings = Model.Name "bindings" -_LambdaExpression_inner = Core.Name "inner"+_LambdaExpression_inner = Model.Name "inner"  -- | A 'let' expression data LetExpression =@@ -548,11 +548,11 @@     letExpressionInner :: Expression}   deriving (Eq, Ord, Read, Show) -_LetExpression = Core.Name "hydra.haskell.syntax.LetExpression"+_LetExpression = Model.Name "hydra.haskell.syntax.LetExpression" -_LetExpression_bindings = Core.Name "bindings"+_LetExpression_bindings = Model.Name "bindings" -_LetExpression_inner = Core.Name "inner"+_LetExpression_inner = Model.Name "inner"  -- | A literal value data Literal =@@ -570,19 +570,19 @@   LiteralString String   deriving (Eq, Ord, Read, Show) -_Literal = Core.Name "hydra.haskell.syntax.Literal"+_Literal = Model.Name "hydra.haskell.syntax.Literal" -_Literal_char = Core.Name "char"+_Literal_char = Model.Name "char" -_Literal_double = Core.Name "double"+_Literal_double = Model.Name "double" -_Literal_float = Core.Name "float"+_Literal_float = Model.Name "float" -_Literal_int = Core.Name "int"+_Literal_int = Model.Name "int" -_Literal_integer = Core.Name "integer"+_Literal_integer = Model.Name "integer" -_Literal_string = Core.Name "string"+_Literal_string = Model.Name "string"  -- | A local binding data LocalBinding =@@ -592,11 +592,11 @@   LocalBindingValue ValueBinding   deriving (Eq, Ord, Read, Show) -_LocalBinding = Core.Name "hydra.haskell.syntax.LocalBinding"+_LocalBinding = Model.Name "hydra.haskell.syntax.LocalBinding" -_LocalBinding_signature = Core.Name "signature"+_LocalBinding_signature = Model.Name "signature" -_LocalBinding_value = Core.Name "value"+_LocalBinding_value = Model.Name "value"  -- | A collection of local bindings newtype LocalBindings =@@ -604,7 +604,7 @@     unLocalBindings :: [LocalBinding]}   deriving (Eq, Ord, Read, Show) -_LocalBindings = Core.Name "hydra.haskell.syntax.LocalBindings"+_LocalBindings = Model.Name "hydra.haskell.syntax.LocalBindings"  -- | A Haskell module data Module =@@ -617,13 +617,13 @@     moduleDeclarations :: [Declaration]}   deriving (Eq, Ord, Read, Show) -_Module = Core.Name "hydra.haskell.syntax.Module"+_Module = Model.Name "hydra.haskell.syntax.Module" -_Module_head = Core.Name "head"+_Module_head = Model.Name "head" -_Module_imports = Core.Name "imports"+_Module_imports = Model.Name "imports" -_Module_declarations = Core.Name "declarations"+_Module_declarations = Model.Name "declarations"  -- | A module head data ModuleHead =@@ -636,13 +636,13 @@     moduleHeadExports :: [Export]}   deriving (Eq, Ord, Read, Show) -_ModuleHead = Core.Name "hydra.haskell.syntax.ModuleHead"+_ModuleHead = Model.Name "hydra.haskell.syntax.ModuleHead" -_ModuleHead_comments = Core.Name "comments"+_ModuleHead_comments = Model.Name "comments" -_ModuleHead_name = Core.Name "name"+_ModuleHead_name = Model.Name "name" -_ModuleHead_exports = Core.Name "exports"+_ModuleHead_exports = Model.Name "exports"  -- | A module name newtype ModuleName =@@ -650,7 +650,7 @@     unModuleName :: String}   deriving (Eq, Ord, Read, Show) -_ModuleName = Core.Name "hydra.haskell.syntax.ModuleName"+_ModuleName = Model.Name "hydra.haskell.syntax.ModuleName"  -- | A name data Name =@@ -660,11 +660,11 @@   NameNormal QualifiedName   deriving (Eq, Ord, Read, Show) -_Name = Core.Name "hydra.haskell.syntax.Name"+_Name = Model.Name "hydra.haskell.syntax.Name" -_Name_implicit = Core.Name "implicit"+_Name_implicit = Model.Name "implicit" -_Name_normal = Core.Name "normal"+_Name_normal = Model.Name "normal"  -- | A component of a qualified name newtype NamePart =@@ -672,7 +672,7 @@     unNamePart :: String}   deriving (Eq, Ord, Read, Show) -_NamePart = Core.Name "hydra.haskell.syntax.NamePart"+_NamePart = Model.Name "hydra.haskell.syntax.NamePart"  -- | An import or export specification data NamedImportExport =@@ -685,13 +685,13 @@     namedImportExportSubspec :: (Maybe ImportExportSubspec)}   deriving (Eq, Ord, Read, Show) -_NamedImportExport = Core.Name "hydra.haskell.syntax.NamedImportExport"+_NamedImportExport = Model.Name "hydra.haskell.syntax.NamedImportExport" -_NamedImportExport_modifier = Core.Name "modifier"+_NamedImportExport_modifier = Model.Name "modifier" -_NamedImportExport_name = Core.Name "name"+_NamedImportExport_name = Model.Name "name" -_NamedImportExport_subspec = Core.Name "subspec"+_NamedImportExport_subspec = Model.Name "subspec"  -- | An operator data Operator =@@ -701,11 +701,11 @@   OperatorNormal QualifiedName   deriving (Eq, Ord, Read, Show) -_Operator = Core.Name "hydra.haskell.syntax.Operator"+_Operator = Model.Name "hydra.haskell.syntax.Operator" -_Operator_backtick = Core.Name "backtick"+_Operator_backtick = Model.Name "backtick" -_Operator_normal = Core.Name "normal"+_Operator_normal = Model.Name "normal"  -- | A pattern data Pattern =@@ -729,25 +729,25 @@   PatternWildcard   deriving (Eq, Ord, Read, Show) -_Pattern = Core.Name "hydra.haskell.syntax.Pattern"+_Pattern = Model.Name "hydra.haskell.syntax.Pattern" -_Pattern_application = Core.Name "application"+_Pattern_application = Model.Name "application" -_Pattern_as = Core.Name "as"+_Pattern_as = Model.Name "as" -_Pattern_list = Core.Name "list"+_Pattern_list = Model.Name "list" -_Pattern_literal = Core.Name "literal"+_Pattern_literal = Model.Name "literal" -_Pattern_name = Core.Name "name"+_Pattern_name = Model.Name "name" -_Pattern_record = Core.Name "record"+_Pattern_record = Model.Name "record" -_Pattern_tuple = Core.Name "tuple"+_Pattern_tuple = Model.Name "tuple" -_Pattern_typed = Core.Name "typed"+_Pattern_typed = Model.Name "typed" -_Pattern_wildcard = Core.Name "wildcard"+_Pattern_wildcard = Model.Name "wildcard"  -- | A pattern field data PatternField =@@ -758,11 +758,11 @@     patternFieldPattern :: Pattern}   deriving (Eq, Ord, Read, Show) -_PatternField = Core.Name "hydra.haskell.syntax.PatternField"+_PatternField = Model.Name "hydra.haskell.syntax.PatternField" -_PatternField_name = Core.Name "name"+_PatternField_name = Model.Name "name" -_PatternField_pattern = Core.Name "pattern"+_PatternField_pattern = Model.Name "pattern"  -- | An ordinary (positional) data constructor data PositionalConstructor =@@ -775,13 +775,13 @@     positionalConstructorComments :: (Maybe String)}   deriving (Eq, Ord, Read, Show) -_PositionalConstructor = Core.Name "hydra.haskell.syntax.PositionalConstructor"+_PositionalConstructor = Model.Name "hydra.haskell.syntax.PositionalConstructor" -_PositionalConstructor_name = Core.Name "name"+_PositionalConstructor_name = Model.Name "name" -_PositionalConstructor_fields = Core.Name "fields"+_PositionalConstructor_fields = Model.Name "fields" -_PositionalConstructor_comments = Core.Name "comments"+_PositionalConstructor_comments = Model.Name "comments"  -- | A qualified name data QualifiedName =@@ -792,11 +792,11 @@     qualifiedNameUnqualified :: NamePart}   deriving (Eq, Ord, Read, Show) -_QualifiedName = Core.Name "hydra.haskell.syntax.QualifiedName"+_QualifiedName = Model.Name "hydra.haskell.syntax.QualifiedName" -_QualifiedName_qualifiers = Core.Name "qualifiers"+_QualifiedName_qualifiers = Model.Name "qualifiers" -_QualifiedName_unqualified = Core.Name "unqualified"+_QualifiedName_unqualified = Model.Name "unqualified"  -- | A record-style data constructor data RecordConstructor =@@ -809,13 +809,13 @@     recordConstructorComments :: (Maybe String)}   deriving (Eq, Ord, Read, Show) -_RecordConstructor = Core.Name "hydra.haskell.syntax.RecordConstructor"+_RecordConstructor = Model.Name "hydra.haskell.syntax.RecordConstructor" -_RecordConstructor_name = Core.Name "name"+_RecordConstructor_name = Model.Name "name" -_RecordConstructor_fields = Core.Name "fields"+_RecordConstructor_fields = Model.Name "fields" -_RecordConstructor_comments = Core.Name "comments"+_RecordConstructor_comments = Model.Name "comments"  -- | A record constructor expression data RecordExpression =@@ -826,11 +826,11 @@     recordExpressionFields :: [FieldUpdate]}   deriving (Eq, Ord, Read, Show) -_RecordExpression = Core.Name "hydra.haskell.syntax.RecordExpression"+_RecordExpression = Model.Name "hydra.haskell.syntax.RecordExpression" -_RecordExpression_name = Core.Name "name"+_RecordExpression_name = Model.Name "name" -_RecordExpression_fields = Core.Name "fields"+_RecordExpression_fields = Model.Name "fields"  -- | A record pattern data RecordPattern =@@ -841,11 +841,11 @@     recordPatternFields :: [PatternField]}   deriving (Eq, Ord, Read, Show) -_RecordPattern = Core.Name "hydra.haskell.syntax.RecordPattern"+_RecordPattern = Model.Name "hydra.haskell.syntax.RecordPattern" -_RecordPattern_name = Core.Name "name"+_RecordPattern_name = Model.Name "name" -_RecordPattern_fields = Core.Name "fields"+_RecordPattern_fields = Model.Name "fields"  -- | An update record expression data RecordUpdateExpression =@@ -856,11 +856,11 @@     recordUpdateExpressionFields :: [FieldUpdate]}   deriving (Eq, Ord, Read, Show) -_RecordUpdateExpression = Core.Name "hydra.haskell.syntax.RecordUpdateExpression"+_RecordUpdateExpression = Model.Name "hydra.haskell.syntax.RecordUpdateExpression" -_RecordUpdateExpression_inner = Core.Name "inner"+_RecordUpdateExpression_inner = Model.Name "inner" -_RecordUpdateExpression_fields = Core.Name "fields"+_RecordUpdateExpression_fields = Model.Name "fields"  -- | A right-hand side of a binding newtype RightHandSide =@@ -868,7 +868,7 @@     unRightHandSide :: Expression}   deriving (Eq, Ord, Read, Show) -_RightHandSide = Core.Name "hydra.haskell.syntax.RightHandSide"+_RightHandSide = Model.Name "hydra.haskell.syntax.RightHandSide"  -- | A section expression data SectionExpression =@@ -879,11 +879,11 @@     sectionExpressionExpression :: Expression}   deriving (Eq, Ord, Read, Show) -_SectionExpression = Core.Name "hydra.haskell.syntax.SectionExpression"+_SectionExpression = Model.Name "hydra.haskell.syntax.SectionExpression" -_SectionExpression_operator = Core.Name "operator"+_SectionExpression_operator = Model.Name "operator" -_SectionExpression_expression = Core.Name "expression"+_SectionExpression_expression = Model.Name "expression"  -- | A simple value binding data SimpleValueBinding =@@ -898,15 +898,15 @@     simpleValueBindingComments :: (Maybe String)}   deriving (Eq, Ord, Read, Show) -_SimpleValueBinding = Core.Name "hydra.haskell.syntax.SimpleValueBinding"+_SimpleValueBinding = Model.Name "hydra.haskell.syntax.SimpleValueBinding" -_SimpleValueBinding_pattern = Core.Name "pattern"+_SimpleValueBinding_pattern = Model.Name "pattern" -_SimpleValueBinding_rhs = Core.Name "rhs"+_SimpleValueBinding_rhs = Model.Name "rhs" -_SimpleValueBinding_localBindings = Core.Name "localBindings"+_SimpleValueBinding_localBindings = Model.Name "localBindings" -_SimpleValueBinding_comments = Core.Name "comments"+_SimpleValueBinding_comments = Model.Name "comments"  -- | A do-notation statement newtype Statement =@@ -914,7 +914,7 @@     unStatement :: Expression}   deriving (Eq, Ord, Read, Show) -_Statement = Core.Name "hydra.haskell.syntax.Statement"+_Statement = Model.Name "hydra.haskell.syntax.Statement"  -- | A type expression data Type =@@ -934,21 +934,21 @@   TypeVariable Name   deriving (Eq, Ord, Read, Show) -_Type = Core.Name "hydra.haskell.syntax.Type"+_Type = Model.Name "hydra.haskell.syntax.Type" -_Type_application = Core.Name "application"+_Type_application = Model.Name "application" -_Type_ctx = Core.Name "ctx"+_Type_ctx = Model.Name "ctx" -_Type_function = Core.Name "function"+_Type_function = Model.Name "function" -_Type_infix = Core.Name "infix"+_Type_infix = Model.Name "infix" -_Type_list = Core.Name "list"+_Type_list = Model.Name "list" -_Type_tuple = Core.Name "tuple"+_Type_tuple = Model.Name "tuple" -_Type_variable = Core.Name "variable"+_Type_variable = Model.Name "variable"  -- | A type signature data TypeSignature =@@ -959,11 +959,11 @@     typeSignatureType :: Type}   deriving (Eq, Ord, Read, Show) -_TypeSignature = Core.Name "hydra.haskell.syntax.TypeSignature"+_TypeSignature = Model.Name "hydra.haskell.syntax.TypeSignature" -_TypeSignature_name = Core.Name "name"+_TypeSignature_name = Model.Name "name" -_TypeSignature_type = Core.Name "type"+_TypeSignature_type = Model.Name "type"  -- | A type synonym declaration data TypeSynonymDeclaration =@@ -976,13 +976,13 @@     typeSynonymDeclarationComments :: (Maybe String)}   deriving (Eq, Ord, Read, Show) -_TypeSynonymDeclaration = Core.Name "hydra.haskell.syntax.TypeSynonymDeclaration"+_TypeSynonymDeclaration = Model.Name "hydra.haskell.syntax.TypeSynonymDeclaration" -_TypeSynonymDeclaration_name = Core.Name "name"+_TypeSynonymDeclaration_name = Model.Name "name" -_TypeSynonymDeclaration_type = Core.Name "type"+_TypeSynonymDeclaration_type = Model.Name "type" -_TypeSynonymDeclaration_comments = Core.Name "comments"+_TypeSynonymDeclaration_comments = Model.Name "comments"  -- | A binding with its type signature data TypedBinding =@@ -995,13 +995,13 @@     typedBindingComments :: (Maybe String)}   deriving (Eq, Ord, Read, Show) -_TypedBinding = Core.Name "hydra.haskell.syntax.TypedBinding"+_TypedBinding = Model.Name "hydra.haskell.syntax.TypedBinding" -_TypedBinding_typeSignature = Core.Name "typeSignature"+_TypedBinding_typeSignature = Model.Name "typeSignature" -_TypedBinding_valueBinding = Core.Name "valueBinding"+_TypedBinding_valueBinding = Model.Name "valueBinding" -_TypedBinding_comments = Core.Name "comments"+_TypedBinding_comments = Model.Name "comments"  -- | A type signature expression data TypedExpression =@@ -1012,11 +1012,11 @@     typedExpressionType :: Type}   deriving (Eq, Ord, Read, Show) -_TypedExpression = Core.Name "hydra.haskell.syntax.TypedExpression"+_TypedExpression = Model.Name "hydra.haskell.syntax.TypedExpression" -_TypedExpression_inner = Core.Name "inner"+_TypedExpression_inner = Model.Name "inner" -_TypedExpression_type = Core.Name "type"+_TypedExpression_type = Model.Name "type"  -- | A typed pattern data TypedPattern =@@ -1027,11 +1027,11 @@     typedPatternType :: Type}   deriving (Eq, Ord, Read, Show) -_TypedPattern = Core.Name "hydra.haskell.syntax.TypedPattern"+_TypedPattern = Model.Name "hydra.haskell.syntax.TypedPattern" -_TypedPattern_inner = Core.Name "inner"+_TypedPattern_inner = Model.Name "inner" -_TypedPattern_type = Core.Name "type"+_TypedPattern_type = Model.Name "type"  -- | A value binding data ValueBinding =@@ -1039,9 +1039,9 @@   ValueBindingSimple SimpleValueBinding   deriving (Eq, Ord, Read, Show) -_ValueBinding = Core.Name "hydra.haskell.syntax.ValueBinding"+_ValueBinding = Model.Name "hydra.haskell.syntax.ValueBinding" -_ValueBinding_simple = Core.Name "simple"+_ValueBinding_simple = Model.Name "simple"  -- | A type variable newtype Variable =@@ -1049,4 +1049,4 @@     unVariable :: Name}   deriving (Eq, Ord, Read, Show) -_Variable = Core.Name "hydra.haskell.syntax.Variable"+_Variable = Model.Name "hydra.haskell.syntax.Variable"
src/main/haskell/Hydra/Haskell/Testing.hs view
@@ -4,66 +4,68 @@  module Hydra.Haskell.Testing where -import qualified Hydra.Ast as Ast-import qualified Hydra.Coders as Coders-import qualified Hydra.Constants as Constants-import qualified Hydra.Core as Core-import qualified Hydra.Decode.Core as DecodeCore-import qualified Hydra.Dependencies as Dependencies-import qualified Hydra.Docs as Docs-import qualified Hydra.Error.Checking as Checking-import qualified Hydra.Error.Core as ErrorCore-import qualified Hydra.Error.File as ErrorFile-import qualified Hydra.Error.Packaging as ErrorPackaging-import qualified Hydra.Error.System as ErrorSystem-import qualified Hydra.Errors as Errors-import qualified Hydra.File as File-import qualified Hydra.Formatting as Formatting-import qualified Hydra.Graph as Graph+import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Constants as Constants+import qualified Hydra.Core.Decode.Model as DecodeModel+import qualified Hydra.Core.Dependencies as Dependencies+import qualified Hydra.Core.Diff as Diff+import qualified Hydra.Core.Docs as Docs+import qualified Hydra.Core.Error.Checking as Checking+import qualified Hydra.Core.Error.File as ErrorFile+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Error.System as ErrorSystem+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.File as File+import qualified Hydra.Core.Formatting as Formatting+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Lexical as Lexical+import qualified Hydra.Core.Overlay.Haskell.Lib.Eithers as Eithers+import qualified Hydra.Core.Overlay.Haskell.Lib.Equality as Equality+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists+import qualified Hydra.Core.Overlay.Haskell.Lib.Literals as Literals+import qualified Hydra.Core.Overlay.Haskell.Lib.Logic as Logic+import qualified Hydra.Core.Overlay.Haskell.Lib.Maps as Maps+import qualified Hydra.Core.Overlay.Haskell.Lib.Math as Math+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals+import qualified Hydra.Core.Overlay.Haskell.Lib.Pairs as Pairs+import qualified Hydra.Core.Overlay.Haskell.Lib.Sets as Sets+import qualified Hydra.Core.Overlay.Haskell.Lib.Strings as Strings+import qualified Hydra.Core.Markdown as Markdown+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Names as Names+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Predicates as Predicates+import qualified Hydra.Core.Print.Errors as PrintErrors+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Regex as Regex+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.Rewriting as Rewriting+import qualified Hydra.Core.Scoping as Scoping+import qualified Hydra.Core.Strip as Strip+import qualified Hydra.Core.System as System+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Time as Time+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variants as Variants import qualified Hydra.Haskell.Syntax as Syntax import qualified Hydra.Haskell.Utils as Utils-import qualified Hydra.Json.Model as Model-import qualified Hydra.Lexical as Lexical-import qualified Hydra.Overlay.Haskell.Lib.Eithers as Eithers-import qualified Hydra.Overlay.Haskell.Lib.Equality as Equality-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists-import qualified Hydra.Overlay.Haskell.Lib.Literals as Literals-import qualified Hydra.Overlay.Haskell.Lib.Logic as Logic-import qualified Hydra.Overlay.Haskell.Lib.Maps as Maps-import qualified Hydra.Overlay.Haskell.Lib.Math as Math-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals-import qualified Hydra.Overlay.Haskell.Lib.Pairs as Pairs-import qualified Hydra.Overlay.Haskell.Lib.Sets as Sets-import qualified Hydra.Overlay.Haskell.Lib.Strings as Strings-import qualified Hydra.Names as Names-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Parsing as Parsing-import qualified Hydra.Paths as Paths-import qualified Hydra.Predicates as Predicates-import qualified Hydra.Print.Errors as PrintErrors-import qualified Hydra.Query as Query-import qualified Hydra.Regex as Regex-import qualified Hydra.Relational as Relational-import qualified Hydra.Rewriting as Rewriting-import qualified Hydra.Scoping as Scoping-import qualified Hydra.Strip as Strip-import qualified Hydra.System as System-import qualified Hydra.Tabular as Tabular-import qualified Hydra.Testing as Testing-import qualified Hydra.Time as Time-import qualified Hydra.Topology as Topology-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import qualified Hydra.Util as Util-import qualified Hydra.Validation as Validation-import qualified Hydra.Variants as Variants import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import Data.Void import qualified Data.Set as S  -- | Add namespaces from a set of names to existing namespaces-addNamespacesToNamespaces :: Util.ModuleNames Syntax.ModuleName -> S.Set Core.Name -> Util.ModuleNames Syntax.ModuleName+addNamespacesToNamespaces :: Util.ModuleNames Syntax.ModuleName -> S.Set Model.Name -> Util.ModuleNames Syntax.ModuleName addNamespacesToNamespaces ns0 names =        let newNamespaces = Sets.fromList (Optionals.givens (Lists.map Names.moduleNameOf (Sets.toList names)))@@ -81,20 +83,20 @@       let testCases_ = collectTestCases tgroup           testTerms = Lists.concat (Lists.map extractTestTerms testCases_)           testBindings =-                  Lists.map (\term -> Core.Binding {-                    Core.bindingName = (Core.Name "_test_"),-                    Core.bindingTerm = term,-                    Core.bindingTypeScheme = Nothing}) testTerms+                  Lists.map (\term -> Model.Binding {+                    Model.bindingName = (Model.Name "_test_"),+                    Model.bindingTerm = term,+                    Model.bindingTypeScheme = Nothing}) testTerms           tempModule =                   Packaging.Module {                     Packaging.moduleName = (Packaging.moduleName mod),                     Packaging.moduleMetadata = (Packaging.moduleMetadata mod),                     Packaging.moduleDependencies = (Packaging.moduleDependencies mod),                     Packaging.moduleDefinitions = (Lists.map (\b -> Packaging.DefinitionTerm (Packaging.TermDefinition {-                      Packaging.termDefinitionName = (Core.bindingName b),+                      Packaging.termDefinitionName = (Model.bindingName b),                       Packaging.termDefinitionMetadata = Nothing,-                      Packaging.termDefinitionSignature = (Optionals.map Scoping.typeSchemeToTermSignature (Core.bindingTypeScheme b)),-                      Packaging.termDefinitionBody = (Core.bindingTerm b)})) testBindings)}+                      Packaging.termDefinitionSignature = (Optionals.map Scoping.typeSchemeToTermSignature (Model.bindingTypeScheme b)),+                      Packaging.termDefinitionBody = (Model.bindingTerm b)})) testBindings)}       in (Eithers.bind (Eithers.bimap (\e -> PrintErrors.error e) (\a -> a) (Utils.namespacesForModule tempModule Lexical.emptyInferenceContext graph_)) (\baseNamespaces ->         let encodedNames = Sets.unions (Lists.map (\t -> extractEncodedTermVariableNames graph_ t) testTerms)         in (Right (addNamespacesToNamespaces baseNamespaces encodedNames))))@@ -144,9 +146,9 @@         "\n"])  -- | Collect variable names from encoded terms within a single term node-collectNames :: Graph.Graph -> S.Set Core.Name -> Core.Term -> S.Set Core.Name+collectNames :: Graph.Graph -> S.Set Model.Name -> Model.Term -> S.Set Model.Name collectNames graf names t =-    Logic.ifElse (Predicates.isEncodedTerm (Strip.deannotateTerm t)) (Eithers.either (\_ -> names) (\decodedTerm -> Sets.union names (Dependencies.termDependencyNames True True True decodedTerm)) (Eithers.bimap (\_e -> _e) (\_a -> _a) (DecodeCore.term graf t))) names+    Logic.ifElse (Predicates.isEncodedTerm (Strip.deannotateTerm t)) (Eithers.either (\_ -> names) (\decodedTerm -> Sets.union names (Dependencies.termDependencyNames True True True decodedTerm)) (Eithers.bimap (\_e -> _e) (\_a -> _a) (DecodeModel.term graf t))) names  -- | Collect all test cases from a test group recursively collectTestCases :: Testing.TestGroup -> [Testing.TestCaseWithMetadata]@@ -154,7 +156,7 @@     Lists.concat2 (Testing.testGroupCases tg) (Lists.concat (Lists.map collectTestCases (Testing.testGroupSubgroups tg)))  -- | Extract all variable names from term-encoded terms in a given term-extractEncodedTermVariableNames :: Graph.Graph -> Core.Term -> S.Set Core.Name+extractEncodedTermVariableNames :: Graph.Graph -> Model.Term -> S.Set Model.Name extractEncodedTermVariableNames graf term =     Rewriting.foldOverTerm Coders.TraversalOrderPre (collectNames graf) Sets.empty term @@ -168,7 +170,7 @@        let mapping_ = Util.moduleNamesMapping namespaces           filtered =-                  Maps.filterWithKey (\ns_ -> \_v -> Logic.not (Equality.equal (Optionals.withDefault "" (Lists.head (Strings.splitOn "hydra.test." (Packaging.unModuleName ns_)))) "")) mapping_+                  Maps.filterWithKey (\ns_ -> \_v -> Logic.not (Equality.equal (Optionals.withDefault "" (Lists.head (Strings.splitOn "hydra.core.test." (Packaging.unModuleName ns_)))) "")) mapping_       in (Lists.map (\entry -> Strings.concat [         "import qualified ",         (Strings.join "." (Lists.map Formatting.capitalize (Strings.splitOn "." (Packaging.unModuleName (Pairs.first entry))))),
src/main/haskell/Hydra/Haskell/Utils.hs view
@@ -4,52 +4,54 @@  module Hydra.Haskell.Utils where -import qualified Hydra.Analysis as Analysis-import qualified Hydra.Ast as Ast-import qualified Hydra.Coders as Coders-import qualified Hydra.Core as Core-import qualified Hydra.Docs as Docs-import qualified Hydra.Error.Checking as Checking-import qualified Hydra.Error.Core as ErrorCore-import qualified Hydra.Error.File as ErrorFile-import qualified Hydra.Error.Packaging as ErrorPackaging-import qualified Hydra.Error.System as ErrorSystem-import qualified Hydra.Errors as Errors-import qualified Hydra.File as File-import qualified Hydra.Formatting as Formatting-import qualified Hydra.Graph as Graph+import qualified Hydra.Core.Analysis as Analysis+import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Diff as Diff+import qualified Hydra.Core.Docs as Docs+import qualified Hydra.Core.Error.Checking as Checking+import qualified Hydra.Core.Error.File as ErrorFile+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Error.System as ErrorSystem+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.File as File+import qualified Hydra.Core.Formatting as Formatting+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Overlay.Haskell.Lib.Eithers as Eithers+import qualified Hydra.Core.Overlay.Haskell.Lib.Equality as Equality+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists+import qualified Hydra.Core.Overlay.Haskell.Lib.Logic as Logic+import qualified Hydra.Core.Overlay.Haskell.Lib.Maps as Maps+import qualified Hydra.Core.Overlay.Haskell.Lib.Math as Math+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals+import qualified Hydra.Core.Overlay.Haskell.Lib.Ordering as Ordering+import qualified Hydra.Core.Overlay.Haskell.Lib.Pairs as Pairs+import qualified Hydra.Core.Overlay.Haskell.Lib.Sets as Sets+import qualified Hydra.Core.Overlay.Haskell.Lib.Strings as Strings+import qualified Hydra.Core.Markdown as Markdown+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Names as Names+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Regex as Regex+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.Strip as Strip+import qualified Hydra.Core.System as System+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Time as Time+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variants as Variants import qualified Hydra.Haskell.Language as Language import qualified Hydra.Haskell.Syntax as Syntax-import qualified Hydra.Json.Model as Model-import qualified Hydra.Overlay.Haskell.Lib.Eithers as Eithers-import qualified Hydra.Overlay.Haskell.Lib.Equality as Equality-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists-import qualified Hydra.Overlay.Haskell.Lib.Logic as Logic-import qualified Hydra.Overlay.Haskell.Lib.Maps as Maps-import qualified Hydra.Overlay.Haskell.Lib.Math as Math-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals-import qualified Hydra.Overlay.Haskell.Lib.Ordering as Ordering-import qualified Hydra.Overlay.Haskell.Lib.Pairs as Pairs-import qualified Hydra.Overlay.Haskell.Lib.Sets as Sets-import qualified Hydra.Overlay.Haskell.Lib.Strings as Strings-import qualified Hydra.Names as Names-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Parsing as Parsing-import qualified Hydra.Paths as Paths-import qualified Hydra.Query as Query-import qualified Hydra.Regex as Regex-import qualified Hydra.Relational as Relational-import qualified Hydra.Strip as Strip-import qualified Hydra.System as System-import qualified Hydra.Tabular as Tabular-import qualified Hydra.Testing as Testing-import qualified Hydra.Time as Time-import qualified Hydra.Topology as Topology-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import qualified Hydra.Util as Util-import qualified Hydra.Validation as Validation-import qualified Hydra.Variants as Variants import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import Data.Void@@ -63,7 +65,7 @@       Syntax.applicationPatternArgs = args})  -- | Generate a Haskell name reference for a Hydra element-elementReference :: Util.ModuleNames Syntax.ModuleName -> Core.Name -> Syntax.Name+elementReference :: Util.ModuleNames Syntax.ModuleName -> Model.Name -> Syntax.Name elementReference namespaces name =        let namespacePair = Util.moduleNamesFocus namespaces@@ -175,7 +177,7 @@         Util.moduleNamesMapping = resultMap})))  -- | Generate an accessor name for a newtype wrapper (e.g., 'unFoo' for Foo)-newtypeAccessorName :: Core.Name -> String+newtypeAccessorName :: Model.Name -> String newtypeAccessorName name = Strings.concat2 "un" (Names.localNameOf name)  -- | Create a raw Haskell name from a string without sanitization@@ -186,10 +188,10 @@       Syntax.qualifiedNameUnqualified = (Syntax.NamePart n)})  -- | Generate a Haskell name for a record field accessor-recordFieldReference :: Util.ModuleNames Syntax.ModuleName -> Core.Name -> Core.Name -> Syntax.Name+recordFieldReference :: Util.ModuleNames Syntax.ModuleName -> Model.Name -> Model.Name -> Syntax.Name recordFieldReference namespaces sname fname = -      let fnameStr = Core.unName fname+      let fnameStr = Model.unName fname           qname = Names.qualifyName sname           ns = Util.qualifiedNameModuleName qname           typeNameStr = typeNameForRecord sname@@ -241,18 +243,18 @@       in (app (Lists.reverse types))  -- | Extract the local type name from a fully qualified record type name-typeNameForRecord :: Core.Name -> String+typeNameForRecord :: Model.Name -> String typeNameForRecord sname = -      let snameStr = Core.unName sname+      let snameStr = Model.unName sname           parts = Strings.splitOn "." snameStr       in (Optionals.withDefault snameStr (Lists.last parts))  -- | Generate a Haskell name for a union variant constructor, with disambiguation-unionFieldReference :: S.Set Core.Name -> Util.ModuleNames Syntax.ModuleName -> Core.Name -> Core.Name -> Syntax.Name+unionFieldReference :: S.Set Model.Name -> Util.ModuleNames Syntax.ModuleName -> Model.Name -> Model.Name -> Syntax.Name unionFieldReference boundNames namespaces sname fname = -      let fnameStr = Core.unName fname+      let fnameStr = Model.unName fname           qname = Names.qualifyName sname           ns = Util.qualifiedNameModuleName qname           typeNameStr = typeNameForRecord sname@@ -274,12 +276,12 @@       in (elementReference namespaces unqualName)  -- | Unpack nested forall types into a list of type variables and the inner type-unpackForallType :: Core.Type -> ([Core.Name], Core.Type)+unpackForallType :: Model.Type -> ([Model.Name], Model.Type) unpackForallType t =     case (Strip.deannotateType t) of-      Core.TypeForall v0 ->-        let v = Core.forallTypeParameter v0-            tbody = Core.forallTypeBody v0+      Model.TypeForall v0 ->+        let v = Model.forallTypeParameter v0+            tbody = Model.forallTypeBody v0             recursiveResult = unpackForallType tbody             vars = Pairs.first recursiveResult             finalType = Pairs.second recursiveResult