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 +80/−0
- hydra-haskell.cabal +4/−4
- src/main/haskell/Hydra/Dsl/Haskell/Environment.hs +0/−273
- src/main/haskell/Hydra/Dsl/Haskell/Syntax.hs +0/−4407
- src/main/haskell/Hydra/Haskell/Coder.hs +264/−261
- src/main/haskell/Hydra/Haskell/Dsl/Environment.hs +274/−0
- src/main/haskell/Hydra/Haskell/Dsl/Syntax.hs +4407/−0
- src/main/haskell/Hydra/Haskell/Environment.hs +7/−7
- src/main/haskell/Hydra/Haskell/Language.hs +40/−38
- src/main/haskell/Hydra/Haskell/Operators.hs +33/−31
- src/main/haskell/Hydra/Haskell/Serde.hs +43/−41
- src/main/haskell/Hydra/Haskell/Syntax.hs +219/−219
- src/main/haskell/Hydra/Haskell/Testing.hs +65/−63
- src/main/haskell/Hydra/Haskell/Utils.hs +58/−56
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