hydra-kernel 0.17.6 → 0.17.7
raw patch · 68 files changed
+4985/−2371 lines, 68 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Hydra.Decode.Paths: subtermAttribute :: Graph -> Term -> Either DecodingError SubtermAttribute
- Hydra.Decode.Paths: subtermEdge :: Graph -> Term -> Either DecodingError SubtermEdge
- Hydra.Decode.Paths: subtermGraph :: Graph -> Term -> Either DecodingError SubtermGraph
- Hydra.Decode.Paths: subtermNode :: Graph -> Term -> Either DecodingError SubtermNode
- Hydra.Decode.Paths: subtermProperty :: Graph -> Term -> Either DecodingError SubtermProperty
- Hydra.Decode.Paths: subtypeAttribute :: Graph -> Term -> Either DecodingError SubtypeAttribute
- Hydra.Decode.Paths: subtypeEdge :: Graph -> Term -> Either DecodingError SubtypeEdge
- Hydra.Decode.Paths: subtypeGraph :: Graph -> Term -> Either DecodingError SubtypeGraph
- Hydra.Decode.Paths: subtypeNode :: Graph -> Term -> Either DecodingError SubtypeNode
- Hydra.Decode.Paths: subtypeProperty :: Graph -> Term -> Either DecodingError SubtypeProperty
- Hydra.Decode.Paths: termAttribute :: Graph -> Term -> Either DecodingError TermAttribute
- Hydra.Decode.Paths: typeAttribute :: Graph -> Term -> Either DecodingError TypeAttribute
- Hydra.Dsl.Paths: subtermAttribute :: TypedTerm SubtermPath -> TypedTerm TermAttribute -> TypedTerm SubtermAttribute
- Hydra.Dsl.Paths: subtermAttributePath :: TypedTerm SubtermAttribute -> TypedTerm SubtermPath
- Hydra.Dsl.Paths: subtermAttributeSubtermAttribute :: TypedName SubtermAttribute
- Hydra.Dsl.Paths: subtermAttributeTarget :: TypedTerm SubtermAttribute -> TypedTerm TermAttribute
- Hydra.Dsl.Paths: subtermAttributeWithPath :: TypedTerm SubtermAttribute -> TypedTerm SubtermPath -> TypedTerm SubtermAttribute
- Hydra.Dsl.Paths: subtermAttributeWithTarget :: TypedTerm SubtermAttribute -> TypedTerm TermAttribute -> TypedTerm SubtermAttribute
- Hydra.Dsl.Paths: subtermEdge :: TypedTerm SubtermPath -> TypedTerm Name -> TypedTerm SubtermEdge
- Hydra.Dsl.Paths: subtermEdgePath :: TypedTerm SubtermEdge -> TypedTerm SubtermPath
- Hydra.Dsl.Paths: subtermEdgeSubtermEdge :: TypedName SubtermEdge
- Hydra.Dsl.Paths: subtermEdgeTarget :: TypedTerm SubtermEdge -> TypedTerm Name
- Hydra.Dsl.Paths: subtermEdgeWithPath :: TypedTerm SubtermEdge -> TypedTerm SubtermPath -> TypedTerm SubtermEdge
- Hydra.Dsl.Paths: subtermEdgeWithTarget :: TypedTerm SubtermEdge -> TypedTerm Name -> TypedTerm SubtermEdge
- Hydra.Dsl.Paths: subtermGraph :: TypedTerm [SubtermNode] -> TypedTerm SubtermGraph
- Hydra.Dsl.Paths: subtermGraphNodes :: TypedTerm SubtermGraph -> TypedTerm [SubtermNode]
- Hydra.Dsl.Paths: subtermGraphSubtermGraph :: TypedName SubtermGraph
- Hydra.Dsl.Paths: subtermGraphWithNodes :: TypedTerm SubtermGraph -> TypedTerm [SubtermNode] -> TypedTerm SubtermGraph
- Hydra.Dsl.Paths: subtermLinkAttribute :: TypedTerm SubtermAttribute -> TypedTerm SubtermLink
- Hydra.Dsl.Paths: subtermLinkEdge :: TypedTerm SubtermEdge -> TypedTerm SubtermLink
- Hydra.Dsl.Paths: subtermLinkProperty :: TypedTerm SubtermProperty -> TypedTerm SubtermLink
- Hydra.Dsl.Paths: subtermNode :: TypedTerm Name -> TypedTerm TypeScheme -> TypedTerm [SubtermLink] -> TypedTerm SubtermNode
- Hydra.Dsl.Paths: subtermNodeLinks :: TypedTerm SubtermNode -> TypedTerm [SubtermLink]
- Hydra.Dsl.Paths: subtermNodeName :: TypedTerm SubtermNode -> TypedTerm Name
- Hydra.Dsl.Paths: subtermNodeSubtermNode :: TypedName SubtermNode
- Hydra.Dsl.Paths: subtermNodeType :: TypedTerm SubtermNode -> TypedTerm TypeScheme
- Hydra.Dsl.Paths: subtermNodeWithLinks :: TypedTerm SubtermNode -> TypedTerm [SubtermLink] -> TypedTerm SubtermNode
- Hydra.Dsl.Paths: subtermNodeWithName :: TypedTerm SubtermNode -> TypedTerm Name -> TypedTerm SubtermNode
- Hydra.Dsl.Paths: subtermNodeWithType :: TypedTerm SubtermNode -> TypedTerm TypeScheme -> TypedTerm SubtermNode
- Hydra.Dsl.Paths: subtermProperty :: TypedTerm SubtermPath -> TypedTerm Term -> TypedTerm SubtermProperty
- Hydra.Dsl.Paths: subtermPropertyPath :: TypedTerm SubtermProperty -> TypedTerm SubtermPath
- Hydra.Dsl.Paths: subtermPropertySubtermProperty :: TypedName SubtermProperty
- Hydra.Dsl.Paths: subtermPropertyTarget :: TypedTerm SubtermProperty -> TypedTerm Term
- Hydra.Dsl.Paths: subtermPropertyWithPath :: TypedTerm SubtermProperty -> TypedTerm SubtermPath -> TypedTerm SubtermProperty
- Hydra.Dsl.Paths: subtermPropertyWithTarget :: TypedTerm SubtermProperty -> TypedTerm Term -> TypedTerm SubtermProperty
- Hydra.Dsl.Paths: subtermStepMapKey :: TypedTerm Int -> TypedTerm SubtermStep
- Hydra.Dsl.Paths: subtermStepMapValue :: TypedTerm Int -> TypedTerm SubtermStep
- Hydra.Dsl.Paths: subtypeAttribute :: TypedTerm SubtypePath -> TypedTerm TypeAttribute -> TypedTerm SubtypeAttribute
- Hydra.Dsl.Paths: subtypeAttributePath :: TypedTerm SubtypeAttribute -> TypedTerm SubtypePath
- Hydra.Dsl.Paths: subtypeAttributeSubtypeAttribute :: TypedName SubtypeAttribute
- Hydra.Dsl.Paths: subtypeAttributeTarget :: TypedTerm SubtypeAttribute -> TypedTerm TypeAttribute
- Hydra.Dsl.Paths: subtypeAttributeWithPath :: TypedTerm SubtypeAttribute -> TypedTerm SubtypePath -> TypedTerm SubtypeAttribute
- Hydra.Dsl.Paths: subtypeAttributeWithTarget :: TypedTerm SubtypeAttribute -> TypedTerm TypeAttribute -> TypedTerm SubtypeAttribute
- Hydra.Dsl.Paths: subtypeEdge :: TypedTerm SubtypePath -> TypedTerm Name -> TypedTerm SubtypeEdge
- Hydra.Dsl.Paths: subtypeEdgePath :: TypedTerm SubtypeEdge -> TypedTerm SubtypePath
- Hydra.Dsl.Paths: subtypeEdgeSubtypeEdge :: TypedName SubtypeEdge
- Hydra.Dsl.Paths: subtypeEdgeTarget :: TypedTerm SubtypeEdge -> TypedTerm Name
- Hydra.Dsl.Paths: subtypeEdgeWithPath :: TypedTerm SubtypeEdge -> TypedTerm SubtypePath -> TypedTerm SubtypeEdge
- Hydra.Dsl.Paths: subtypeEdgeWithTarget :: TypedTerm SubtypeEdge -> TypedTerm Name -> TypedTerm SubtypeEdge
- Hydra.Dsl.Paths: subtypeGraph :: TypedTerm [SubtypeNode] -> TypedTerm SubtypeGraph
- Hydra.Dsl.Paths: subtypeGraphNodes :: TypedTerm SubtypeGraph -> TypedTerm [SubtypeNode]
- Hydra.Dsl.Paths: subtypeGraphSubtypeGraph :: TypedName SubtypeGraph
- Hydra.Dsl.Paths: subtypeGraphWithNodes :: TypedTerm SubtypeGraph -> TypedTerm [SubtypeNode] -> TypedTerm SubtypeGraph
- Hydra.Dsl.Paths: subtypeLinkAttribute :: TypedTerm SubtypeAttribute -> TypedTerm SubtypeLink
- Hydra.Dsl.Paths: subtypeLinkEdge :: TypedTerm SubtypeEdge -> TypedTerm SubtypeLink
- Hydra.Dsl.Paths: subtypeLinkProperty :: TypedTerm SubtypeProperty -> TypedTerm SubtypeLink
- Hydra.Dsl.Paths: subtypeNode :: TypedTerm Name -> TypedTerm [SubtypeLink] -> TypedTerm SubtypeNode
- Hydra.Dsl.Paths: subtypeNodeLinks :: TypedTerm SubtypeNode -> TypedTerm [SubtypeLink]
- Hydra.Dsl.Paths: subtypeNodeName :: TypedTerm SubtypeNode -> TypedTerm Name
- Hydra.Dsl.Paths: subtypeNodeSubtypeNode :: TypedName SubtypeNode
- Hydra.Dsl.Paths: subtypeNodeWithLinks :: TypedTerm SubtypeNode -> TypedTerm [SubtypeLink] -> TypedTerm SubtypeNode
- Hydra.Dsl.Paths: subtypeNodeWithName :: TypedTerm SubtypeNode -> TypedTerm Name -> TypedTerm SubtypeNode
- Hydra.Dsl.Paths: subtypeProperty :: TypedTerm SubtypePath -> TypedTerm Type -> TypedTerm SubtypeProperty
- Hydra.Dsl.Paths: subtypePropertyPath :: TypedTerm SubtypeProperty -> TypedTerm SubtypePath
- Hydra.Dsl.Paths: subtypePropertySubtypeProperty :: TypedName SubtypeProperty
- Hydra.Dsl.Paths: subtypePropertyTarget :: TypedTerm SubtypeProperty -> TypedTerm Type
- Hydra.Dsl.Paths: subtypePropertyWithPath :: TypedTerm SubtypeProperty -> TypedTerm SubtypePath -> TypedTerm SubtypeProperty
- Hydra.Dsl.Paths: subtypePropertyWithTarget :: TypedTerm SubtypeProperty -> TypedTerm Type -> TypedTerm SubtypeProperty
- Hydra.Dsl.Paths: termAttributeCasesTypeName :: TypedTerm Name -> TypedTerm TermAttribute
- Hydra.Dsl.Paths: termAttributeInjectTypeName :: TypedTerm Name -> TypedTerm TermAttribute
- Hydra.Dsl.Paths: termAttributeLambdaDomainGiven :: TypedTerm Type -> TypedTerm TermAttribute
- Hydra.Dsl.Paths: termAttributeLambdaParameter :: TypedTerm Name -> TypedTerm TermAttribute
- Hydra.Dsl.Paths: termAttributeLetBindingTypeSchemeGiven :: TypedTerm (Name, TypeScheme) -> TypedTerm TermAttribute
- Hydra.Dsl.Paths: termAttributeProjectFieldName :: TypedTerm Name -> TypedTerm TermAttribute
- Hydra.Dsl.Paths: termAttributeProjectTypeName :: TypedTerm Name -> TypedTerm TermAttribute
- Hydra.Dsl.Paths: termAttributeRecordTypeName :: TypedTerm Name -> TypedTerm TermAttribute
- Hydra.Dsl.Paths: termAttributeTermAttribute :: TypedName TermAttribute
- Hydra.Dsl.Paths: termAttributeTypeApplicationType :: TypedTerm Type -> TypedTerm TermAttribute
- Hydra.Dsl.Paths: termAttributeTypeLambdaParameter :: TypedTerm Name -> TypedTerm TermAttribute
- Hydra.Dsl.Paths: termAttributeWrapTypeName :: TypedTerm Name -> TypedTerm TermAttribute
- Hydra.Dsl.Paths: typeAttributeAnnotatedAnnotation :: TypedTerm Term -> TypedTerm TypeAttribute
- Hydra.Dsl.Paths: typeAttributeForallParameter :: TypedTerm Name -> TypedTerm TypeAttribute
- Hydra.Dsl.Paths: typeAttributeTypeAttribute :: TypedName TypeAttribute
- Hydra.Encode.Paths: subtermAttribute :: SubtermAttribute -> Term
- Hydra.Encode.Paths: subtermEdge :: SubtermEdge -> Term
- Hydra.Encode.Paths: subtermGraph :: SubtermGraph -> Term
- Hydra.Encode.Paths: subtermNode :: SubtermNode -> Term
- Hydra.Encode.Paths: subtermProperty :: SubtermProperty -> Term
- Hydra.Encode.Paths: subtypeAttribute :: SubtypeAttribute -> Term
- Hydra.Encode.Paths: subtypeEdge :: SubtypeEdge -> Term
- Hydra.Encode.Paths: subtypeGraph :: SubtypeGraph -> Term
- Hydra.Encode.Paths: subtypeNode :: SubtypeNode -> Term
- Hydra.Encode.Paths: subtypeProperty :: SubtypeProperty -> Term
- Hydra.Encode.Paths: termAttribute :: TermAttribute -> Term
- Hydra.Encode.Paths: typeAttribute :: TypeAttribute -> Term
- Hydra.Overlay.Haskell.Dsl.Typed.Testing: isDisabledForMinimalInference :: TestCaseWithMetadata -> Bool
- Hydra.Overlay.Haskell.Dsl.Typed.Testing: tag_disabledForMinimalInference :: Tag
- Hydra.Paths: SubtermAttribute :: SubtermPath -> TermAttribute -> SubtermAttribute
- Hydra.Paths: SubtermEdge :: SubtermPath -> Name -> SubtermEdge
- Hydra.Paths: SubtermGraph :: [SubtermNode] -> SubtermGraph
- Hydra.Paths: SubtermLinkAttribute :: SubtermAttribute -> SubtermLink
- Hydra.Paths: SubtermLinkEdge :: SubtermEdge -> SubtermLink
- Hydra.Paths: SubtermLinkProperty :: SubtermProperty -> SubtermLink
- Hydra.Paths: SubtermNode :: Name -> TypeScheme -> [SubtermLink] -> SubtermNode
- Hydra.Paths: SubtermProperty :: SubtermPath -> Term -> SubtermProperty
- Hydra.Paths: SubtermStepMapKey :: Int -> SubtermStep
- Hydra.Paths: SubtermStepMapValue :: Int -> SubtermStep
- Hydra.Paths: SubtypeAttribute :: SubtypePath -> TypeAttribute -> SubtypeAttribute
- Hydra.Paths: SubtypeEdge :: SubtypePath -> Name -> SubtypeEdge
- Hydra.Paths: SubtypeGraph :: [SubtypeNode] -> SubtypeGraph
- Hydra.Paths: SubtypeLinkAttribute :: SubtypeAttribute -> SubtypeLink
- Hydra.Paths: SubtypeLinkEdge :: SubtypeEdge -> SubtypeLink
- Hydra.Paths: SubtypeLinkProperty :: SubtypeProperty -> SubtypeLink
- Hydra.Paths: SubtypeNode :: Name -> [SubtypeLink] -> SubtypeNode
- Hydra.Paths: SubtypeProperty :: SubtypePath -> Type -> SubtypeProperty
- Hydra.Paths: TermAttributeCasesTypeName :: Name -> TermAttribute
- Hydra.Paths: TermAttributeInjectTypeName :: Name -> TermAttribute
- Hydra.Paths: TermAttributeLambdaDomainGiven :: Type -> TermAttribute
- Hydra.Paths: TermAttributeLambdaParameter :: Name -> TermAttribute
- Hydra.Paths: TermAttributeLetBindingTypeSchemeGiven :: (Name, TypeScheme) -> TermAttribute
- Hydra.Paths: TermAttributeProjectFieldName :: Name -> TermAttribute
- Hydra.Paths: TermAttributeProjectTypeName :: Name -> TermAttribute
- Hydra.Paths: TermAttributeRecordTypeName :: Name -> TermAttribute
- Hydra.Paths: TermAttributeTypeApplicationType :: Type -> TermAttribute
- Hydra.Paths: TermAttributeTypeLambdaParameter :: Name -> TermAttribute
- Hydra.Paths: TermAttributeWrapTypeName :: Name -> TermAttribute
- Hydra.Paths: TypeAttributeAnnotatedAnnotation :: Term -> TypeAttribute
- Hydra.Paths: TypeAttributeForallParameter :: Name -> TypeAttribute
- Hydra.Paths: [subtermAttributePath] :: SubtermAttribute -> SubtermPath
- Hydra.Paths: [subtermAttributeTarget] :: SubtermAttribute -> TermAttribute
- Hydra.Paths: [subtermEdgePath] :: SubtermEdge -> SubtermPath
- Hydra.Paths: [subtermEdgeTarget] :: SubtermEdge -> Name
- Hydra.Paths: [subtermGraphNodes] :: SubtermGraph -> [SubtermNode]
- Hydra.Paths: [subtermNodeLinks] :: SubtermNode -> [SubtermLink]
- Hydra.Paths: [subtermNodeName] :: SubtermNode -> Name
- Hydra.Paths: [subtermNodeType] :: SubtermNode -> TypeScheme
- Hydra.Paths: [subtermPropertyPath] :: SubtermProperty -> SubtermPath
- Hydra.Paths: [subtermPropertyTarget] :: SubtermProperty -> Term
- Hydra.Paths: [subtypeAttributePath] :: SubtypeAttribute -> SubtypePath
- Hydra.Paths: [subtypeAttributeTarget] :: SubtypeAttribute -> TypeAttribute
- Hydra.Paths: [subtypeEdgePath] :: SubtypeEdge -> SubtypePath
- Hydra.Paths: [subtypeEdgeTarget] :: SubtypeEdge -> Name
- Hydra.Paths: [subtypeGraphNodes] :: SubtypeGraph -> [SubtypeNode]
- Hydra.Paths: [subtypeNodeLinks] :: SubtypeNode -> [SubtypeLink]
- Hydra.Paths: [subtypeNodeName] :: SubtypeNode -> Name
- Hydra.Paths: [subtypePropertyPath] :: SubtypeProperty -> SubtypePath
- Hydra.Paths: [subtypePropertyTarget] :: SubtypeProperty -> Type
- Hydra.Paths: _SubtermAttribute :: Name
- Hydra.Paths: _SubtermAttribute_path :: Name
- Hydra.Paths: _SubtermAttribute_target :: Name
- Hydra.Paths: _SubtermEdge :: Name
- Hydra.Paths: _SubtermEdge_path :: Name
- Hydra.Paths: _SubtermEdge_target :: Name
- Hydra.Paths: _SubtermGraph :: Name
- Hydra.Paths: _SubtermGraph_nodes :: Name
- Hydra.Paths: _SubtermLink_attribute :: Name
- Hydra.Paths: _SubtermLink_edge :: Name
- Hydra.Paths: _SubtermLink_property :: Name
- Hydra.Paths: _SubtermNode :: Name
- Hydra.Paths: _SubtermNode_links :: Name
- Hydra.Paths: _SubtermNode_name :: Name
- Hydra.Paths: _SubtermNode_type :: Name
- Hydra.Paths: _SubtermProperty :: Name
- Hydra.Paths: _SubtermProperty_path :: Name
- Hydra.Paths: _SubtermProperty_target :: Name
- Hydra.Paths: _SubtermStep_mapKey :: Name
- Hydra.Paths: _SubtermStep_mapValue :: Name
- Hydra.Paths: _SubtypeAttribute :: Name
- Hydra.Paths: _SubtypeAttribute_path :: Name
- Hydra.Paths: _SubtypeAttribute_target :: Name
- Hydra.Paths: _SubtypeEdge :: Name
- Hydra.Paths: _SubtypeEdge_path :: Name
- Hydra.Paths: _SubtypeEdge_target :: Name
- Hydra.Paths: _SubtypeGraph :: Name
- Hydra.Paths: _SubtypeGraph_nodes :: Name
- Hydra.Paths: _SubtypeLink_attribute :: Name
- Hydra.Paths: _SubtypeLink_edge :: Name
- Hydra.Paths: _SubtypeLink_property :: Name
- Hydra.Paths: _SubtypeNode :: Name
- Hydra.Paths: _SubtypeNode_links :: Name
- Hydra.Paths: _SubtypeNode_name :: Name
- Hydra.Paths: _SubtypeProperty :: Name
- Hydra.Paths: _SubtypeProperty_path :: Name
- Hydra.Paths: _SubtypeProperty_target :: Name
- Hydra.Paths: _TermAttribute :: Name
- Hydra.Paths: _TermAttribute_casesTypeName :: Name
- Hydra.Paths: _TermAttribute_injectTypeName :: Name
- Hydra.Paths: _TermAttribute_lambdaDomainGiven :: Name
- Hydra.Paths: _TermAttribute_lambdaParameter :: Name
- Hydra.Paths: _TermAttribute_letBindingTypeSchemeGiven :: Name
- Hydra.Paths: _TermAttribute_projectFieldName :: Name
- Hydra.Paths: _TermAttribute_projectTypeName :: Name
- Hydra.Paths: _TermAttribute_recordTypeName :: Name
- Hydra.Paths: _TermAttribute_typeApplicationType :: Name
- Hydra.Paths: _TermAttribute_typeLambdaParameter :: Name
- Hydra.Paths: _TermAttribute_wrapTypeName :: Name
- Hydra.Paths: _TypeAttribute :: Name
- Hydra.Paths: _TypeAttribute_annotatedAnnotation :: Name
- Hydra.Paths: _TypeAttribute_forallParameter :: Name
- Hydra.Paths: data SubtermAttribute
- Hydra.Paths: data SubtermEdge
- Hydra.Paths: data SubtermGraph
- Hydra.Paths: data SubtermNode
- Hydra.Paths: data SubtermProperty
- Hydra.Paths: data SubtypeAttribute
- Hydra.Paths: data SubtypeEdge
- Hydra.Paths: data SubtypeGraph
- Hydra.Paths: data SubtypeNode
- Hydra.Paths: data SubtypeProperty
- Hydra.Paths: data TermAttribute
- Hydra.Paths: data TypeAttribute
- Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.SubtermAttribute
- Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.SubtermEdge
- Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.SubtermGraph
- Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.SubtermNode
- Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.SubtermProperty
- Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.SubtypeAttribute
- Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.SubtypeEdge
- Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.SubtypeGraph
- Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.SubtypeNode
- Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.SubtypeProperty
- Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.TermAttribute
- Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.TypeAttribute
- Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.SubtermAttribute
- Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.SubtermEdge
- Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.SubtermGraph
- Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.SubtermNode
- Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.SubtermProperty
- Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.SubtypeAttribute
- Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.SubtypeEdge
- Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.SubtypeGraph
- Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.SubtypeNode
- Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.SubtypeProperty
- Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.TermAttribute
- Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.TypeAttribute
- Hydra.Paths: instance GHC.Read.Read Hydra.Paths.SubtermAttribute
- Hydra.Paths: instance GHC.Read.Read Hydra.Paths.SubtermEdge
- Hydra.Paths: instance GHC.Read.Read Hydra.Paths.SubtermGraph
- Hydra.Paths: instance GHC.Read.Read Hydra.Paths.SubtermNode
- Hydra.Paths: instance GHC.Read.Read Hydra.Paths.SubtermProperty
- Hydra.Paths: instance GHC.Read.Read Hydra.Paths.SubtypeAttribute
- Hydra.Paths: instance GHC.Read.Read Hydra.Paths.SubtypeEdge
- Hydra.Paths: instance GHC.Read.Read Hydra.Paths.SubtypeGraph
- Hydra.Paths: instance GHC.Read.Read Hydra.Paths.SubtypeNode
- Hydra.Paths: instance GHC.Read.Read Hydra.Paths.SubtypeProperty
- Hydra.Paths: instance GHC.Read.Read Hydra.Paths.TermAttribute
- Hydra.Paths: instance GHC.Read.Read Hydra.Paths.TypeAttribute
- Hydra.Paths: instance GHC.Show.Show Hydra.Paths.SubtermAttribute
- Hydra.Paths: instance GHC.Show.Show Hydra.Paths.SubtermEdge
- Hydra.Paths: instance GHC.Show.Show Hydra.Paths.SubtermGraph
- Hydra.Paths: instance GHC.Show.Show Hydra.Paths.SubtermNode
- Hydra.Paths: instance GHC.Show.Show Hydra.Paths.SubtermProperty
- Hydra.Paths: instance GHC.Show.Show Hydra.Paths.SubtypeAttribute
- Hydra.Paths: instance GHC.Show.Show Hydra.Paths.SubtypeEdge
- Hydra.Paths: instance GHC.Show.Show Hydra.Paths.SubtypeGraph
- Hydra.Paths: instance GHC.Show.Show Hydra.Paths.SubtypeNode
- Hydra.Paths: instance GHC.Show.Show Hydra.Paths.SubtypeProperty
- Hydra.Paths: instance GHC.Show.Show Hydra.Paths.TermAttribute
- Hydra.Paths: instance GHC.Show.Show Hydra.Paths.TypeAttribute
- Hydra.Shredding: shredGraph :: Graph -> Either Error SubtermGraph
- Hydra.Shredding: shredSchema :: Map Name Type -> Either Error SubtypeGraph
- Hydra.Shredding: shredTerm :: Graph -> Name -> TypeScheme -> Term -> Either Error SubtermNode
- Hydra.Shredding: shredTermLinks :: Graph -> Set Name -> SubtermPath -> Term -> Either Error [SubtermLink]
- Hydra.Shredding: shredType :: Map Name t0 -> Name -> Type -> Either Error SubtypeNode
- Hydra.Shredding: shredTypeLinks :: Map Name t0 -> Set Name -> SubtypePath -> Type -> Either Error [SubtypeLink]
- Hydra.Shredding: termAttributes :: SubtermPath -> Term -> [SubtermAttribute]
- Hydra.Shredding: typeAttributes :: SubtypePath -> Type -> [SubtypeAttribute]
+ Hydra.Decode.Error.Packaging: moduleInMultiplePackagesError :: Graph -> Term -> Either DecodingError ModuleInMultiplePackagesError
+ Hydra.Decode.Error.Packaging: nestedModuleNameError :: Graph -> Term -> Either DecodingError NestedModuleNameError
+ Hydra.Decode.Packaging: provision :: Graph -> Term -> Either DecodingError Provision
+ Hydra.Decode.Packaging: provisionKind :: Graph -> Term -> Either DecodingError ProvisionKind
+ Hydra.Decode.Paths: lambdaVariableReference :: Graph -> Term -> Either DecodingError LambdaVariableReference
+ Hydra.Decode.Paths: letVariableReference :: Graph -> Term -> Either DecodingError LetVariableReference
+ Hydra.Decode.Paths: nominalTypeReference :: Graph -> Term -> Either DecodingError NominalTypeReference
+ Hydra.Decode.Paths: primitiveReference :: Graph -> Term -> Either DecodingError PrimitiveReference
+ Hydra.Decode.Paths: termAttributeLink :: Graph -> Term -> Either DecodingError TermAttributeLink
+ Hydra.Decode.Paths: termGraph :: Graph -> Term -> Either DecodingError TermGraph
+ Hydra.Decode.Paths: termLink :: Graph -> Term -> Either DecodingError TermLink
+ Hydra.Decode.Paths: termNode :: Graph -> Term -> Either DecodingError TermNode
+ Hydra.Decode.Paths: termNodeId :: Graph -> Term -> Either DecodingError TermNodeId
+ Hydra.Decode.Paths: termReference :: Graph -> Term -> Either DecodingError TermReference
+ Hydra.Decode.Paths: termReferenceLink :: Graph -> Term -> Either DecodingError TermReferenceLink
+ Hydra.Decode.Paths: typeAttributeLink :: Graph -> Term -> Either DecodingError TypeAttributeLink
+ Hydra.Decode.Paths: typeGraph :: Graph -> Term -> Either DecodingError TypeGraph
+ Hydra.Decode.Paths: typeLink :: Graph -> Term -> Either DecodingError TypeLink
+ Hydra.Decode.Paths: typeNode :: Graph -> Term -> Either DecodingError TypeNode
+ Hydra.Decode.Paths: typeNodeId :: Graph -> Term -> Either DecodingError TypeNodeId
+ Hydra.Decode.Paths: typeReference :: Graph -> Term -> Either DecodingError TypeReference
+ Hydra.Decode.Paths: typeReferenceLink :: Graph -> Term -> Either DecodingError TypeReferenceLink
+ Hydra.Decode.Paths: typeVariableReference :: Graph -> Term -> Either DecodingError TypeVariableReference
+ Hydra.Dsl.Error.Packaging: invalidPackageErrorModuleInMultiplePackages :: TypedTerm ModuleInMultiplePackagesError -> TypedTerm InvalidPackageError
+ Hydra.Dsl.Error.Packaging: invalidPackageErrorNestedModuleName :: TypedTerm NestedModuleNameError -> TypedTerm InvalidPackageError
+ Hydra.Dsl.Error.Packaging: moduleInMultiplePackagesError :: TypedTerm ModuleName -> TypedTerm PackageName -> TypedTerm PackageName -> TypedTerm ModuleInMultiplePackagesError
+ Hydra.Dsl.Error.Packaging: moduleInMultiplePackagesErrorFirstPackage :: TypedTerm ModuleInMultiplePackagesError -> TypedTerm PackageName
+ Hydra.Dsl.Error.Packaging: moduleInMultiplePackagesErrorModuleInMultiplePackagesError :: TypedName ModuleInMultiplePackagesError
+ Hydra.Dsl.Error.Packaging: moduleInMultiplePackagesErrorModuleName :: TypedTerm ModuleInMultiplePackagesError -> TypedTerm ModuleName
+ Hydra.Dsl.Error.Packaging: moduleInMultiplePackagesErrorSecondPackage :: TypedTerm ModuleInMultiplePackagesError -> TypedTerm PackageName
+ Hydra.Dsl.Error.Packaging: moduleInMultiplePackagesErrorWithFirstPackage :: TypedTerm ModuleInMultiplePackagesError -> TypedTerm PackageName -> TypedTerm ModuleInMultiplePackagesError
+ Hydra.Dsl.Error.Packaging: moduleInMultiplePackagesErrorWithModuleName :: TypedTerm ModuleInMultiplePackagesError -> TypedTerm ModuleName -> TypedTerm ModuleInMultiplePackagesError
+ Hydra.Dsl.Error.Packaging: moduleInMultiplePackagesErrorWithSecondPackage :: TypedTerm ModuleInMultiplePackagesError -> TypedTerm PackageName -> TypedTerm ModuleInMultiplePackagesError
+ Hydra.Dsl.Error.Packaging: nestedModuleNameError :: TypedTerm ModuleName -> TypedTerm ModuleName -> TypedTerm NestedModuleNameError
+ Hydra.Dsl.Error.Packaging: nestedModuleNameErrorInner :: TypedTerm NestedModuleNameError -> TypedTerm ModuleName
+ Hydra.Dsl.Error.Packaging: nestedModuleNameErrorNestedModuleNameError :: TypedName NestedModuleNameError
+ Hydra.Dsl.Error.Packaging: nestedModuleNameErrorOuter :: TypedTerm NestedModuleNameError -> TypedTerm ModuleName
+ Hydra.Dsl.Error.Packaging: nestedModuleNameErrorWithInner :: TypedTerm NestedModuleNameError -> TypedTerm ModuleName -> TypedTerm NestedModuleNameError
+ Hydra.Dsl.Error.Packaging: nestedModuleNameErrorWithOuter :: TypedTerm NestedModuleNameError -> TypedTerm ModuleName -> TypedTerm NestedModuleNameError
+ Hydra.Dsl.Names: composeProvisionName :: TypedTerm Name -> TypedTerm String -> TypedTerm Name
+ Hydra.Dsl.Names: nameToUpperDashed :: TypedTerm Name -> TypedTerm String
+ Hydra.Dsl.Packaging: entityMetadataProvisions :: TypedTerm EntityMetadata -> TypedTerm [Provision]
+ Hydra.Dsl.Packaging: entityMetadataWithProvisions :: TypedTerm EntityMetadata -> TypedTerm [Provision] -> TypedTerm EntityMetadata
+ Hydra.Dsl.Packaging: provision :: TypedTerm Name -> TypedTerm ProvisionKind -> TypedTerm String -> TypedTerm Provision
+ Hydra.Dsl.Packaging: provisionKind :: TypedTerm Provision -> TypedTerm ProvisionKind
+ Hydra.Dsl.Packaging: provisionKindProvisionKind :: TypedName ProvisionKind
+ Hydra.Dsl.Packaging: provisionKindRecommendation :: TypedTerm ProvisionKind
+ Hydra.Dsl.Packaging: provisionKindRequirement :: TypedTerm ProvisionKind
+ Hydra.Dsl.Packaging: provisionName :: TypedTerm Provision -> TypedTerm Name
+ Hydra.Dsl.Packaging: provisionProvision :: TypedName Provision
+ Hydra.Dsl.Packaging: provisionStatement :: TypedTerm Provision -> TypedTerm String
+ Hydra.Dsl.Packaging: provisionWithKind :: TypedTerm Provision -> TypedTerm ProvisionKind -> TypedTerm Provision
+ Hydra.Dsl.Packaging: provisionWithName :: TypedTerm Provision -> TypedTerm Name -> TypedTerm Provision
+ Hydra.Dsl.Packaging: provisionWithStatement :: TypedTerm Provision -> TypedTerm String -> TypedTerm Provision
+ Hydra.Dsl.Paths: lambdaVariableReference :: TypedTerm Name -> TypedTerm TermNodeId -> TypedTerm Type -> TypedTerm LambdaVariableReference
+ Hydra.Dsl.Paths: lambdaVariableReferenceBoundByNode :: TypedTerm LambdaVariableReference -> TypedTerm TermNodeId
+ Hydra.Dsl.Paths: lambdaVariableReferenceLambdaVariableReference :: TypedName LambdaVariableReference
+ Hydra.Dsl.Paths: lambdaVariableReferenceType :: TypedTerm LambdaVariableReference -> TypedTerm Type
+ Hydra.Dsl.Paths: lambdaVariableReferenceVariable :: TypedTerm LambdaVariableReference -> TypedTerm Name
+ Hydra.Dsl.Paths: lambdaVariableReferenceWithBoundByNode :: TypedTerm LambdaVariableReference -> TypedTerm TermNodeId -> TypedTerm LambdaVariableReference
+ Hydra.Dsl.Paths: lambdaVariableReferenceWithType :: TypedTerm LambdaVariableReference -> TypedTerm Type -> TypedTerm LambdaVariableReference
+ Hydra.Dsl.Paths: lambdaVariableReferenceWithVariable :: TypedTerm LambdaVariableReference -> TypedTerm Name -> TypedTerm LambdaVariableReference
+ Hydra.Dsl.Paths: letVariableReference :: TypedTerm Name -> TypedTerm TermNodeId -> TypedTerm Type -> TypedTerm LetVariableReference
+ Hydra.Dsl.Paths: letVariableReferenceBindingNode :: TypedTerm LetVariableReference -> TypedTerm TermNodeId
+ Hydra.Dsl.Paths: letVariableReferenceLetVariableReference :: TypedName LetVariableReference
+ Hydra.Dsl.Paths: letVariableReferenceType :: TypedTerm LetVariableReference -> TypedTerm Type
+ Hydra.Dsl.Paths: letVariableReferenceVariable :: TypedTerm LetVariableReference -> TypedTerm Name
+ Hydra.Dsl.Paths: letVariableReferenceWithBindingNode :: TypedTerm LetVariableReference -> TypedTerm TermNodeId -> TypedTerm LetVariableReference
+ Hydra.Dsl.Paths: letVariableReferenceWithType :: TypedTerm LetVariableReference -> TypedTerm Type -> TypedTerm LetVariableReference
+ Hydra.Dsl.Paths: letVariableReferenceWithVariable :: TypedTerm LetVariableReference -> TypedTerm Name -> TypedTerm LetVariableReference
+ Hydra.Dsl.Paths: nominalTypeReference :: TypedTerm Name -> TypedTerm NominalTypeReference
+ Hydra.Dsl.Paths: nominalTypeReferenceName :: TypedTerm NominalTypeReference -> TypedTerm Name
+ Hydra.Dsl.Paths: nominalTypeReferenceNominalTypeReference :: TypedName NominalTypeReference
+ Hydra.Dsl.Paths: nominalTypeReferenceWithName :: TypedTerm NominalTypeReference -> TypedTerm Name -> TypedTerm NominalTypeReference
+ Hydra.Dsl.Paths: primitiveReference :: TypedTerm Name -> TypedTerm Type -> TypedTerm PrimitiveReference
+ Hydra.Dsl.Paths: primitiveReferenceName :: TypedTerm PrimitiveReference -> TypedTerm Name
+ Hydra.Dsl.Paths: primitiveReferencePrimitiveReference :: TypedName PrimitiveReference
+ Hydra.Dsl.Paths: primitiveReferenceType :: TypedTerm PrimitiveReference -> TypedTerm Type
+ Hydra.Dsl.Paths: primitiveReferenceWithName :: TypedTerm PrimitiveReference -> TypedTerm Name -> TypedTerm PrimitiveReference
+ Hydra.Dsl.Paths: primitiveReferenceWithType :: TypedTerm PrimitiveReference -> TypedTerm Type -> TypedTerm PrimitiveReference
+ Hydra.Dsl.Paths: subtermLink :: TypedTerm SubtermStep -> TypedTerm TermNode -> TypedTerm SubtermLink
+ Hydra.Dsl.Paths: subtermLinkChild :: TypedTerm SubtermLink -> TypedTerm TermNode
+ Hydra.Dsl.Paths: subtermLinkStep :: TypedTerm SubtermLink -> TypedTerm SubtermStep
+ Hydra.Dsl.Paths: subtermLinkWithChild :: TypedTerm SubtermLink -> TypedTerm TermNode -> TypedTerm SubtermLink
+ Hydra.Dsl.Paths: subtermLinkWithStep :: TypedTerm SubtermLink -> TypedTerm SubtermStep -> TypedTerm SubtermLink
+ Hydra.Dsl.Paths: subtermStepMapEntry :: TypedTerm Int -> TypedTerm SubtermStep
+ Hydra.Dsl.Paths: subtypeLink :: TypedTerm SubtypeStep -> TypedTerm TypeNode -> TypedTerm SubtypeLink
+ Hydra.Dsl.Paths: subtypeLinkChild :: TypedTerm SubtypeLink -> TypedTerm TypeNode
+ Hydra.Dsl.Paths: subtypeLinkStep :: TypedTerm SubtypeLink -> TypedTerm SubtypeStep
+ Hydra.Dsl.Paths: subtypeLinkWithChild :: TypedTerm SubtypeLink -> TypedTerm TypeNode -> TypedTerm SubtypeLink
+ Hydra.Dsl.Paths: subtypeLinkWithStep :: TypedTerm SubtypeLink -> TypedTerm SubtypeStep -> TypedTerm SubtypeLink
+ Hydra.Dsl.Paths: termAttributeLinkCasesTypeName :: TypedTerm Name -> TypedTerm TermAttributeLink
+ Hydra.Dsl.Paths: termAttributeLinkInjectTypeName :: TypedTerm Name -> TypedTerm TermAttributeLink
+ Hydra.Dsl.Paths: termAttributeLinkLambdaDomainGiven :: TypedTerm Type -> TypedTerm TermAttributeLink
+ Hydra.Dsl.Paths: termAttributeLinkLambdaParameter :: TypedTerm Name -> TypedTerm TermAttributeLink
+ Hydra.Dsl.Paths: termAttributeLinkLetBindingTypeSchemeGiven :: TypedTerm (Name, TypeScheme) -> TypedTerm TermAttributeLink
+ Hydra.Dsl.Paths: termAttributeLinkLiteral :: TypedTerm Literal -> TypedTerm TermAttributeLink
+ Hydra.Dsl.Paths: termAttributeLinkProjectFieldName :: TypedTerm Name -> TypedTerm TermAttributeLink
+ Hydra.Dsl.Paths: termAttributeLinkProjectTypeName :: TypedTerm Name -> TypedTerm TermAttributeLink
+ Hydra.Dsl.Paths: termAttributeLinkRecordTypeName :: TypedTerm Name -> TypedTerm TermAttributeLink
+ Hydra.Dsl.Paths: termAttributeLinkTermAttributeLink :: TypedName TermAttributeLink
+ Hydra.Dsl.Paths: termAttributeLinkTypeApplicationType :: TypedTerm Type -> TypedTerm TermAttributeLink
+ Hydra.Dsl.Paths: termAttributeLinkTypeLambdaParameter :: TypedTerm Name -> TypedTerm TermAttributeLink
+ Hydra.Dsl.Paths: termAttributeLinkUnwrapTypeName :: TypedTerm Name -> TypedTerm TermAttributeLink
+ Hydra.Dsl.Paths: termAttributeLinkWrapTypeName :: TypedTerm Name -> TypedTerm TermAttributeLink
+ Hydra.Dsl.Paths: termGraph :: TypedTerm (Map Name TermNode) -> TypedTerm TermGraph
+ Hydra.Dsl.Paths: termGraphRoots :: TypedTerm TermGraph -> TypedTerm (Map Name TermNode)
+ Hydra.Dsl.Paths: termGraphTermGraph :: TypedName TermGraph
+ Hydra.Dsl.Paths: termGraphWithRoots :: TypedTerm TermGraph -> TypedTerm (Map Name TermNode) -> TypedTerm TermGraph
+ Hydra.Dsl.Paths: termLinkAttribute :: TypedTerm TermAttributeLink -> TypedTerm TermLink
+ Hydra.Dsl.Paths: termLinkReference :: TypedTerm TermReferenceLink -> TypedTerm TermLink
+ Hydra.Dsl.Paths: termLinkSubterm :: TypedTerm SubtermLink -> TypedTerm TermLink
+ Hydra.Dsl.Paths: termLinkTermLink :: TypedName TermLink
+ Hydra.Dsl.Paths: termNode :: TypedTerm Term -> TypedTerm Type -> TypedTerm [TermLink] -> TypedTerm TermNode
+ Hydra.Dsl.Paths: termNodeId :: TypedTerm Name -> TypedTerm SubtermPath -> TypedTerm TermNodeId
+ Hydra.Dsl.Paths: termNodeIdPath :: TypedTerm TermNodeId -> TypedTerm SubtermPath
+ Hydra.Dsl.Paths: termNodeIdRoot :: TypedTerm TermNodeId -> TypedTerm Name
+ Hydra.Dsl.Paths: termNodeIdTermNodeId :: TypedName TermNodeId
+ Hydra.Dsl.Paths: termNodeIdWithPath :: TypedTerm TermNodeId -> TypedTerm SubtermPath -> TypedTerm TermNodeId
+ Hydra.Dsl.Paths: termNodeIdWithRoot :: TypedTerm TermNodeId -> TypedTerm Name -> TypedTerm TermNodeId
+ Hydra.Dsl.Paths: termNodeLinks :: TypedTerm TermNode -> TypedTerm [TermLink]
+ Hydra.Dsl.Paths: termNodeTerm :: TypedTerm TermNode -> TypedTerm Term
+ Hydra.Dsl.Paths: termNodeTermNode :: TypedName TermNode
+ Hydra.Dsl.Paths: termNodeType :: TypedTerm TermNode -> TypedTerm Type
+ Hydra.Dsl.Paths: termNodeWithLinks :: TypedTerm TermNode -> TypedTerm [TermLink] -> TypedTerm TermNode
+ Hydra.Dsl.Paths: termNodeWithTerm :: TypedTerm TermNode -> TypedTerm Term -> TypedTerm TermNode
+ Hydra.Dsl.Paths: termNodeWithType :: TypedTerm TermNode -> TypedTerm Type -> TypedTerm TermNode
+ Hydra.Dsl.Paths: termReferenceLambda :: TypedTerm LambdaVariableReference -> TypedTerm TermReference
+ Hydra.Dsl.Paths: termReferenceLet :: TypedTerm LetVariableReference -> TypedTerm TermReference
+ Hydra.Dsl.Paths: termReferenceLink :: TypedTerm SubtermStep -> TypedTerm TermReference -> TypedTerm TermReferenceLink
+ Hydra.Dsl.Paths: termReferenceLinkStep :: TypedTerm TermReferenceLink -> TypedTerm SubtermStep
+ Hydra.Dsl.Paths: termReferenceLinkTarget :: TypedTerm TermReferenceLink -> TypedTerm TermReference
+ Hydra.Dsl.Paths: termReferenceLinkTermReferenceLink :: TypedName TermReferenceLink
+ Hydra.Dsl.Paths: termReferenceLinkWithStep :: TypedTerm TermReferenceLink -> TypedTerm SubtermStep -> TypedTerm TermReferenceLink
+ Hydra.Dsl.Paths: termReferenceLinkWithTarget :: TypedTerm TermReferenceLink -> TypedTerm TermReference -> TypedTerm TermReferenceLink
+ Hydra.Dsl.Paths: termReferencePrimitive :: TypedTerm PrimitiveReference -> TypedTerm TermReference
+ Hydra.Dsl.Paths: termReferenceTermReference :: TypedName TermReference
+ Hydra.Dsl.Paths: typeAttributeLinkAnnotatedAnnotation :: TypedTerm Term -> TypedTerm TypeAttributeLink
+ Hydra.Dsl.Paths: typeAttributeLinkForallParameter :: TypedTerm Name -> TypedTerm TypeAttributeLink
+ Hydra.Dsl.Paths: typeAttributeLinkLiteral :: TypedTerm LiteralType -> TypedTerm TypeAttributeLink
+ Hydra.Dsl.Paths: typeAttributeLinkTypeAttributeLink :: TypedName TypeAttributeLink
+ Hydra.Dsl.Paths: typeGraph :: TypedTerm (Map Name TypeNode) -> TypedTerm TypeGraph
+ Hydra.Dsl.Paths: typeGraphRoots :: TypedTerm TypeGraph -> TypedTerm (Map Name TypeNode)
+ Hydra.Dsl.Paths: typeGraphTypeGraph :: TypedName TypeGraph
+ Hydra.Dsl.Paths: typeGraphWithRoots :: TypedTerm TypeGraph -> TypedTerm (Map Name TypeNode) -> TypedTerm TypeGraph
+ Hydra.Dsl.Paths: typeLinkAttribute :: TypedTerm TypeAttributeLink -> TypedTerm TypeLink
+ Hydra.Dsl.Paths: typeLinkReference :: TypedTerm TypeReferenceLink -> TypedTerm TypeLink
+ Hydra.Dsl.Paths: typeLinkSubtype :: TypedTerm SubtypeLink -> TypedTerm TypeLink
+ Hydra.Dsl.Paths: typeLinkTypeLink :: TypedName TypeLink
+ Hydra.Dsl.Paths: typeNode :: TypedTerm Type -> TypedTerm [TypeLink] -> TypedTerm TypeNode
+ Hydra.Dsl.Paths: typeNodeId :: TypedTerm Name -> TypedTerm SubtypePath -> TypedTerm TypeNodeId
+ Hydra.Dsl.Paths: typeNodeIdPath :: TypedTerm TypeNodeId -> TypedTerm SubtypePath
+ Hydra.Dsl.Paths: typeNodeIdRoot :: TypedTerm TypeNodeId -> TypedTerm Name
+ Hydra.Dsl.Paths: typeNodeIdTypeNodeId :: TypedName TypeNodeId
+ Hydra.Dsl.Paths: typeNodeIdWithPath :: TypedTerm TypeNodeId -> TypedTerm SubtypePath -> TypedTerm TypeNodeId
+ Hydra.Dsl.Paths: typeNodeIdWithRoot :: TypedTerm TypeNodeId -> TypedTerm Name -> TypedTerm TypeNodeId
+ Hydra.Dsl.Paths: typeNodeLinks :: TypedTerm TypeNode -> TypedTerm [TypeLink]
+ Hydra.Dsl.Paths: typeNodeType :: TypedTerm TypeNode -> TypedTerm Type
+ Hydra.Dsl.Paths: typeNodeTypeNode :: TypedName TypeNode
+ Hydra.Dsl.Paths: typeNodeWithLinks :: TypedTerm TypeNode -> TypedTerm [TypeLink] -> TypedTerm TypeNode
+ Hydra.Dsl.Paths: typeNodeWithType :: TypedTerm TypeNode -> TypedTerm Type -> TypedTerm TypeNode
+ Hydra.Dsl.Paths: typeReferenceLink :: TypedTerm SubtypeStep -> TypedTerm TypeReference -> TypedTerm TypeReferenceLink
+ Hydra.Dsl.Paths: typeReferenceLinkStep :: TypedTerm TypeReferenceLink -> TypedTerm SubtypeStep
+ Hydra.Dsl.Paths: typeReferenceLinkTarget :: TypedTerm TypeReferenceLink -> TypedTerm TypeReference
+ Hydra.Dsl.Paths: typeReferenceLinkTypeReferenceLink :: TypedName TypeReferenceLink
+ Hydra.Dsl.Paths: typeReferenceLinkWithStep :: TypedTerm TypeReferenceLink -> TypedTerm SubtypeStep -> TypedTerm TypeReferenceLink
+ Hydra.Dsl.Paths: typeReferenceLinkWithTarget :: TypedTerm TypeReferenceLink -> TypedTerm TypeReference -> TypedTerm TypeReferenceLink
+ Hydra.Dsl.Paths: typeReferenceNominal :: TypedTerm NominalTypeReference -> TypedTerm TypeReference
+ Hydra.Dsl.Paths: typeReferenceTypeReference :: TypedName TypeReference
+ Hydra.Dsl.Paths: typeReferenceVariable :: TypedTerm TypeVariableReference -> TypedTerm TypeReference
+ Hydra.Dsl.Paths: typeVariableReference :: TypedTerm Name -> TypedTerm TypeNodeId -> TypedTerm TypeVariableReference
+ Hydra.Dsl.Paths: typeVariableReferenceBoundByNode :: TypedTerm TypeVariableReference -> TypedTerm TypeNodeId
+ Hydra.Dsl.Paths: typeVariableReferenceTypeVariableReference :: TypedName TypeVariableReference
+ Hydra.Dsl.Paths: typeVariableReferenceVariable :: TypedTerm TypeVariableReference -> TypedTerm Name
+ Hydra.Dsl.Paths: typeVariableReferenceWithBoundByNode :: TypedTerm TypeVariableReference -> TypedTerm TypeNodeId -> TypedTerm TypeVariableReference
+ Hydra.Dsl.Paths: typeVariableReferenceWithVariable :: TypedTerm TypeVariableReference -> TypedTerm Name -> TypedTerm TypeVariableReference
+ Hydra.Dsl.Testing: testCaseWithMetadataProvisions :: TypedTerm TestCaseWithMetadata -> TypedTerm [Name]
+ Hydra.Dsl.Testing: testCaseWithMetadataWithProvisions :: TypedTerm TestCaseWithMetadata -> TypedTerm [Name] -> TypedTerm TestCaseWithMetadata
+ Hydra.Dsl.Util: caseConventionUpperDashed :: TypedTerm CaseConvention
+ Hydra.Encode.Error.Packaging: moduleInMultiplePackagesError :: ModuleInMultiplePackagesError -> Term
+ Hydra.Encode.Error.Packaging: nestedModuleNameError :: NestedModuleNameError -> Term
+ Hydra.Encode.Packaging: provision :: Provision -> Term
+ Hydra.Encode.Packaging: provisionKind :: ProvisionKind -> Term
+ Hydra.Encode.Paths: lambdaVariableReference :: LambdaVariableReference -> Term
+ Hydra.Encode.Paths: letVariableReference :: LetVariableReference -> Term
+ Hydra.Encode.Paths: nominalTypeReference :: NominalTypeReference -> Term
+ Hydra.Encode.Paths: primitiveReference :: PrimitiveReference -> Term
+ Hydra.Encode.Paths: termAttributeLink :: TermAttributeLink -> Term
+ Hydra.Encode.Paths: termGraph :: TermGraph -> Term
+ Hydra.Encode.Paths: termLink :: TermLink -> Term
+ Hydra.Encode.Paths: termNode :: TermNode -> Term
+ Hydra.Encode.Paths: termNodeId :: TermNodeId -> Term
+ Hydra.Encode.Paths: termReference :: TermReference -> Term
+ Hydra.Encode.Paths: termReferenceLink :: TermReferenceLink -> Term
+ Hydra.Encode.Paths: typeAttributeLink :: TypeAttributeLink -> Term
+ Hydra.Encode.Paths: typeGraph :: TypeGraph -> Term
+ Hydra.Encode.Paths: typeLink :: TypeLink -> Term
+ Hydra.Encode.Paths: typeNode :: TypeNode -> Term
+ Hydra.Encode.Paths: typeNodeId :: TypeNodeId -> Term
+ Hydra.Encode.Paths: typeReference :: TypeReference -> Term
+ Hydra.Encode.Paths: typeReferenceLink :: TypeReferenceLink -> Term
+ Hydra.Encode.Paths: typeVariableReference :: TypeVariableReference -> Term
+ Hydra.Error.Packaging: InvalidPackageErrorModuleInMultiplePackages :: ModuleInMultiplePackagesError -> InvalidPackageError
+ Hydra.Error.Packaging: InvalidPackageErrorNestedModuleName :: NestedModuleNameError -> InvalidPackageError
+ Hydra.Error.Packaging: ModuleInMultiplePackagesError :: ModuleName -> PackageName -> PackageName -> ModuleInMultiplePackagesError
+ Hydra.Error.Packaging: NestedModuleNameError :: ModuleName -> ModuleName -> NestedModuleNameError
+ Hydra.Error.Packaging: [moduleInMultiplePackagesErrorFirstPackage] :: ModuleInMultiplePackagesError -> PackageName
+ Hydra.Error.Packaging: [moduleInMultiplePackagesErrorModuleName] :: ModuleInMultiplePackagesError -> ModuleName
+ Hydra.Error.Packaging: [moduleInMultiplePackagesErrorSecondPackage] :: ModuleInMultiplePackagesError -> PackageName
+ Hydra.Error.Packaging: [nestedModuleNameErrorInner] :: NestedModuleNameError -> ModuleName
+ Hydra.Error.Packaging: [nestedModuleNameErrorOuter] :: NestedModuleNameError -> ModuleName
+ Hydra.Error.Packaging: _InvalidPackageError_moduleInMultiplePackages :: Name
+ Hydra.Error.Packaging: _InvalidPackageError_nestedModuleName :: Name
+ Hydra.Error.Packaging: _ModuleInMultiplePackagesError :: Name
+ Hydra.Error.Packaging: _ModuleInMultiplePackagesError_firstPackage :: Name
+ Hydra.Error.Packaging: _ModuleInMultiplePackagesError_moduleName :: Name
+ Hydra.Error.Packaging: _ModuleInMultiplePackagesError_secondPackage :: Name
+ Hydra.Error.Packaging: _NestedModuleNameError :: Name
+ Hydra.Error.Packaging: _NestedModuleNameError_inner :: Name
+ Hydra.Error.Packaging: _NestedModuleNameError_outer :: Name
+ Hydra.Error.Packaging: data ModuleInMultiplePackagesError
+ Hydra.Error.Packaging: data NestedModuleNameError
+ Hydra.Error.Packaging: instance GHC.Classes.Eq Hydra.Error.Packaging.ModuleInMultiplePackagesError
+ Hydra.Error.Packaging: instance GHC.Classes.Eq Hydra.Error.Packaging.NestedModuleNameError
+ Hydra.Error.Packaging: instance GHC.Classes.Ord Hydra.Error.Packaging.ModuleInMultiplePackagesError
+ Hydra.Error.Packaging: instance GHC.Classes.Ord Hydra.Error.Packaging.NestedModuleNameError
+ Hydra.Error.Packaging: instance GHC.Read.Read Hydra.Error.Packaging.ModuleInMultiplePackagesError
+ Hydra.Error.Packaging: instance GHC.Read.Read Hydra.Error.Packaging.NestedModuleNameError
+ Hydra.Error.Packaging: instance GHC.Show.Show Hydra.Error.Packaging.ModuleInMultiplePackagesError
+ Hydra.Error.Packaging: instance GHC.Show.Show Hydra.Error.Packaging.NestedModuleNameError
+ Hydra.Names: composeProvisionName :: Name -> String -> Name
+ Hydra.Names: nameToUpperDashed :: Name -> String
+ Hydra.Overlay.Haskell.Dsl.Typed.Testing: checkModulePartitionRef :: TypedTerm ([(String, [ModuleName])] -> [InvalidPackageError])
+ Hydra.Overlay.Haskell.Dsl.Typed.Testing: checkNestedModuleNamesRef :: TypedTerm (Package -> Maybe InvalidPackageError)
+ Hydra.Overlay.Haskell.Dsl.Typed.Testing: idempotenceCase :: AsTerm t Term => String -> [Tag] -> t -> TypedTerm TestCaseWithMetadata
+ Hydra.Overlay.Haskell.Dsl.Typed.Testing: testCaseWithMetadataAndProvisions :: TypedTerm String -> TypedTerm TestCase -> TypedTerm (Maybe String) -> TypedTerm [Tag] -> TypedTerm [Name] -> TypedTerm TestCaseWithMetadata
+ Hydra.Overlay.Haskell.Dsl.Typed.Testing: testCaseWithMetadataProvisions :: TypedTerm (TestCaseWithMetadata -> [Name])
+ Hydra.Overlay.Haskell.Dsl.Typed.Testing: testCaseWithMetadataWithProvisions :: TypedTerm TestCaseWithMetadata -> TypedTerm [Name] -> TypedTerm TestCaseWithMetadata
+ Hydra.Overlay.Haskell.Libraries: compareDecimals :: Scientific -> Scientific -> Ordering
+ Hydra.Overlay.Haskell.Libraries: compareFloats :: Double -> Double -> Ordering
+ Hydra.Overlay.Haskell.Libraries: decimalPayload :: Term -> Maybe Scientific
+ Hydra.Overlay.Haskell.Libraries: floatPayload :: Term -> Maybe Double
+ Hydra.Overlay.Haskell.Libraries: termCompare :: Term -> Term -> Comparison
+ Hydra.Overlay.Haskell.Libraries: termCompareOrdering :: Term -> Term -> Ordering
+ Hydra.Overlay.Haskell.Libraries: termEqual :: Term -> Term -> Bool
+ Hydra.Overlay.Haskell.Libraries: termGt :: Term -> Term -> Bool
+ Hydra.Overlay.Haskell.Libraries: termGte :: Term -> Term -> Bool
+ Hydra.Overlay.Haskell.Libraries: termLt :: Term -> Term -> Bool
+ Hydra.Overlay.Haskell.Libraries: termLte :: Term -> Term -> Bool
+ Hydra.Overlay.Haskell.Libraries: termMax :: Term -> Term -> Term
+ Hydra.Overlay.Haskell.Libraries: termMin :: Term -> Term -> Term
+ Hydra.Overlay.Haskell.Libraries: termNotEqual :: Term -> Term -> Bool
+ Hydra.Packaging: Provision :: Name -> ProvisionKind -> String -> Provision
+ Hydra.Packaging: ProvisionKindRecommendation :: ProvisionKind
+ Hydra.Packaging: ProvisionKindRequirement :: ProvisionKind
+ Hydra.Packaging: [entityMetadataProvisions] :: EntityMetadata -> [Provision]
+ Hydra.Packaging: [provisionKind] :: Provision -> ProvisionKind
+ Hydra.Packaging: [provisionName] :: Provision -> Name
+ Hydra.Packaging: [provisionStatement] :: Provision -> String
+ Hydra.Packaging: _EntityMetadata_provisions :: Name
+ Hydra.Packaging: _Provision :: Name
+ Hydra.Packaging: _ProvisionKind :: Name
+ Hydra.Packaging: _ProvisionKind_recommendation :: Name
+ Hydra.Packaging: _ProvisionKind_requirement :: Name
+ Hydra.Packaging: _Provision_kind :: Name
+ Hydra.Packaging: _Provision_name :: Name
+ Hydra.Packaging: _Provision_statement :: Name
+ Hydra.Packaging: data Provision
+ Hydra.Packaging: data ProvisionKind
+ Hydra.Packaging: instance GHC.Classes.Eq Hydra.Packaging.Provision
+ Hydra.Packaging: instance GHC.Classes.Eq Hydra.Packaging.ProvisionKind
+ Hydra.Packaging: instance GHC.Classes.Ord Hydra.Packaging.Provision
+ Hydra.Packaging: instance GHC.Classes.Ord Hydra.Packaging.ProvisionKind
+ Hydra.Packaging: instance GHC.Read.Read Hydra.Packaging.Provision
+ Hydra.Packaging: instance GHC.Read.Read Hydra.Packaging.ProvisionKind
+ Hydra.Packaging: instance GHC.Show.Show Hydra.Packaging.Provision
+ Hydra.Packaging: instance GHC.Show.Show Hydra.Packaging.ProvisionKind
+ Hydra.Paths: LambdaVariableReference :: Name -> TermNodeId -> Type -> LambdaVariableReference
+ Hydra.Paths: LetVariableReference :: Name -> TermNodeId -> Type -> LetVariableReference
+ Hydra.Paths: NominalTypeReference :: Name -> NominalTypeReference
+ Hydra.Paths: PrimitiveReference :: Name -> Type -> PrimitiveReference
+ Hydra.Paths: SubtermLink :: SubtermStep -> TermNode -> SubtermLink
+ Hydra.Paths: SubtermStepMapEntry :: Int -> SubtermStep
+ Hydra.Paths: SubtypeLink :: SubtypeStep -> TypeNode -> SubtypeLink
+ Hydra.Paths: TermAttributeLinkCasesTypeName :: Name -> TermAttributeLink
+ Hydra.Paths: TermAttributeLinkInjectTypeName :: Name -> TermAttributeLink
+ Hydra.Paths: TermAttributeLinkLambdaDomainGiven :: Type -> TermAttributeLink
+ Hydra.Paths: TermAttributeLinkLambdaParameter :: Name -> TermAttributeLink
+ Hydra.Paths: TermAttributeLinkLetBindingTypeSchemeGiven :: (Name, TypeScheme) -> TermAttributeLink
+ Hydra.Paths: TermAttributeLinkLiteral :: Literal -> TermAttributeLink
+ Hydra.Paths: TermAttributeLinkProjectFieldName :: Name -> TermAttributeLink
+ Hydra.Paths: TermAttributeLinkProjectTypeName :: Name -> TermAttributeLink
+ Hydra.Paths: TermAttributeLinkRecordTypeName :: Name -> TermAttributeLink
+ Hydra.Paths: TermAttributeLinkTypeApplicationType :: Type -> TermAttributeLink
+ Hydra.Paths: TermAttributeLinkTypeLambdaParameter :: Name -> TermAttributeLink
+ Hydra.Paths: TermAttributeLinkUnwrapTypeName :: Name -> TermAttributeLink
+ Hydra.Paths: TermAttributeLinkWrapTypeName :: Name -> TermAttributeLink
+ Hydra.Paths: TermGraph :: Map Name TermNode -> TermGraph
+ Hydra.Paths: TermLinkAttribute :: TermAttributeLink -> TermLink
+ Hydra.Paths: TermLinkReference :: TermReferenceLink -> TermLink
+ Hydra.Paths: TermLinkSubterm :: SubtermLink -> TermLink
+ Hydra.Paths: TermNode :: Term -> Type -> [TermLink] -> TermNode
+ Hydra.Paths: TermNodeId :: Name -> SubtermPath -> TermNodeId
+ Hydra.Paths: TermReferenceLambda :: LambdaVariableReference -> TermReference
+ Hydra.Paths: TermReferenceLet :: LetVariableReference -> TermReference
+ Hydra.Paths: TermReferenceLink :: SubtermStep -> TermReference -> TermReferenceLink
+ Hydra.Paths: TermReferencePrimitive :: PrimitiveReference -> TermReference
+ Hydra.Paths: TypeAttributeLinkAnnotatedAnnotation :: Term -> TypeAttributeLink
+ Hydra.Paths: TypeAttributeLinkForallParameter :: Name -> TypeAttributeLink
+ Hydra.Paths: TypeAttributeLinkLiteral :: LiteralType -> TypeAttributeLink
+ Hydra.Paths: TypeGraph :: Map Name TypeNode -> TypeGraph
+ Hydra.Paths: TypeLinkAttribute :: TypeAttributeLink -> TypeLink
+ Hydra.Paths: TypeLinkReference :: TypeReferenceLink -> TypeLink
+ Hydra.Paths: TypeLinkSubtype :: SubtypeLink -> TypeLink
+ Hydra.Paths: TypeNode :: Type -> [TypeLink] -> TypeNode
+ Hydra.Paths: TypeNodeId :: Name -> SubtypePath -> TypeNodeId
+ Hydra.Paths: TypeReferenceLink :: SubtypeStep -> TypeReference -> TypeReferenceLink
+ Hydra.Paths: TypeReferenceNominal :: NominalTypeReference -> TypeReference
+ Hydra.Paths: TypeReferenceVariable :: TypeVariableReference -> TypeReference
+ Hydra.Paths: TypeVariableReference :: Name -> TypeNodeId -> TypeVariableReference
+ Hydra.Paths: [lambdaVariableReferenceBoundByNode] :: LambdaVariableReference -> TermNodeId
+ Hydra.Paths: [lambdaVariableReferenceType] :: LambdaVariableReference -> Type
+ Hydra.Paths: [lambdaVariableReferenceVariable] :: LambdaVariableReference -> Name
+ Hydra.Paths: [letVariableReferenceBindingNode] :: LetVariableReference -> TermNodeId
+ Hydra.Paths: [letVariableReferenceType] :: LetVariableReference -> Type
+ Hydra.Paths: [letVariableReferenceVariable] :: LetVariableReference -> Name
+ Hydra.Paths: [nominalTypeReferenceName] :: NominalTypeReference -> Name
+ Hydra.Paths: [primitiveReferenceName] :: PrimitiveReference -> Name
+ Hydra.Paths: [primitiveReferenceType] :: PrimitiveReference -> Type
+ Hydra.Paths: [subtermLinkChild] :: SubtermLink -> TermNode
+ Hydra.Paths: [subtermLinkStep] :: SubtermLink -> SubtermStep
+ Hydra.Paths: [subtypeLinkChild] :: SubtypeLink -> TypeNode
+ Hydra.Paths: [subtypeLinkStep] :: SubtypeLink -> SubtypeStep
+ Hydra.Paths: [termGraphRoots] :: TermGraph -> Map Name TermNode
+ Hydra.Paths: [termNodeIdPath] :: TermNodeId -> SubtermPath
+ Hydra.Paths: [termNodeIdRoot] :: TermNodeId -> Name
+ Hydra.Paths: [termNodeLinks] :: TermNode -> [TermLink]
+ Hydra.Paths: [termNodeTerm] :: TermNode -> Term
+ Hydra.Paths: [termNodeType] :: TermNode -> Type
+ Hydra.Paths: [termReferenceLinkStep] :: TermReferenceLink -> SubtermStep
+ Hydra.Paths: [termReferenceLinkTarget] :: TermReferenceLink -> TermReference
+ Hydra.Paths: [typeGraphRoots] :: TypeGraph -> Map Name TypeNode
+ Hydra.Paths: [typeNodeIdPath] :: TypeNodeId -> SubtypePath
+ Hydra.Paths: [typeNodeIdRoot] :: TypeNodeId -> Name
+ Hydra.Paths: [typeNodeLinks] :: TypeNode -> [TypeLink]
+ Hydra.Paths: [typeNodeType] :: TypeNode -> Type
+ Hydra.Paths: [typeReferenceLinkStep] :: TypeReferenceLink -> SubtypeStep
+ Hydra.Paths: [typeReferenceLinkTarget] :: TypeReferenceLink -> TypeReference
+ Hydra.Paths: [typeVariableReferenceBoundByNode] :: TypeVariableReference -> TypeNodeId
+ Hydra.Paths: [typeVariableReferenceVariable] :: TypeVariableReference -> Name
+ Hydra.Paths: _LambdaVariableReference :: Name
+ Hydra.Paths: _LambdaVariableReference_boundByNode :: Name
+ Hydra.Paths: _LambdaVariableReference_type :: Name
+ Hydra.Paths: _LambdaVariableReference_variable :: Name
+ Hydra.Paths: _LetVariableReference :: Name
+ Hydra.Paths: _LetVariableReference_bindingNode :: Name
+ Hydra.Paths: _LetVariableReference_type :: Name
+ Hydra.Paths: _LetVariableReference_variable :: Name
+ Hydra.Paths: _NominalTypeReference :: Name
+ Hydra.Paths: _NominalTypeReference_name :: Name
+ Hydra.Paths: _PrimitiveReference :: Name
+ Hydra.Paths: _PrimitiveReference_name :: Name
+ Hydra.Paths: _PrimitiveReference_type :: Name
+ Hydra.Paths: _SubtermLink_child :: Name
+ Hydra.Paths: _SubtermLink_step :: Name
+ Hydra.Paths: _SubtermStep_mapEntry :: Name
+ Hydra.Paths: _SubtypeLink_child :: Name
+ Hydra.Paths: _SubtypeLink_step :: Name
+ Hydra.Paths: _TermAttributeLink :: Name
+ Hydra.Paths: _TermAttributeLink_casesTypeName :: Name
+ Hydra.Paths: _TermAttributeLink_injectTypeName :: Name
+ Hydra.Paths: _TermAttributeLink_lambdaDomainGiven :: Name
+ Hydra.Paths: _TermAttributeLink_lambdaParameter :: Name
+ Hydra.Paths: _TermAttributeLink_letBindingTypeSchemeGiven :: Name
+ Hydra.Paths: _TermAttributeLink_literal :: Name
+ Hydra.Paths: _TermAttributeLink_projectFieldName :: Name
+ Hydra.Paths: _TermAttributeLink_projectTypeName :: Name
+ Hydra.Paths: _TermAttributeLink_recordTypeName :: Name
+ Hydra.Paths: _TermAttributeLink_typeApplicationType :: Name
+ Hydra.Paths: _TermAttributeLink_typeLambdaParameter :: Name
+ Hydra.Paths: _TermAttributeLink_unwrapTypeName :: Name
+ Hydra.Paths: _TermAttributeLink_wrapTypeName :: Name
+ Hydra.Paths: _TermGraph :: Name
+ Hydra.Paths: _TermGraph_roots :: Name
+ Hydra.Paths: _TermLink :: Name
+ Hydra.Paths: _TermLink_attribute :: Name
+ Hydra.Paths: _TermLink_reference :: Name
+ Hydra.Paths: _TermLink_subterm :: Name
+ Hydra.Paths: _TermNode :: Name
+ Hydra.Paths: _TermNodeId :: Name
+ Hydra.Paths: _TermNodeId_path :: Name
+ Hydra.Paths: _TermNodeId_root :: Name
+ Hydra.Paths: _TermNode_links :: Name
+ Hydra.Paths: _TermNode_term :: Name
+ Hydra.Paths: _TermNode_type :: Name
+ Hydra.Paths: _TermReference :: Name
+ Hydra.Paths: _TermReferenceLink :: Name
+ Hydra.Paths: _TermReferenceLink_step :: Name
+ Hydra.Paths: _TermReferenceLink_target :: Name
+ Hydra.Paths: _TermReference_lambda :: Name
+ Hydra.Paths: _TermReference_let :: Name
+ Hydra.Paths: _TermReference_primitive :: Name
+ Hydra.Paths: _TypeAttributeLink :: Name
+ Hydra.Paths: _TypeAttributeLink_annotatedAnnotation :: Name
+ Hydra.Paths: _TypeAttributeLink_forallParameter :: Name
+ Hydra.Paths: _TypeAttributeLink_literal :: Name
+ Hydra.Paths: _TypeGraph :: Name
+ Hydra.Paths: _TypeGraph_roots :: Name
+ Hydra.Paths: _TypeLink :: Name
+ Hydra.Paths: _TypeLink_attribute :: Name
+ Hydra.Paths: _TypeLink_reference :: Name
+ Hydra.Paths: _TypeLink_subtype :: Name
+ Hydra.Paths: _TypeNode :: Name
+ Hydra.Paths: _TypeNodeId :: Name
+ Hydra.Paths: _TypeNodeId_path :: Name
+ Hydra.Paths: _TypeNodeId_root :: Name
+ Hydra.Paths: _TypeNode_links :: Name
+ Hydra.Paths: _TypeNode_type :: Name
+ Hydra.Paths: _TypeReference :: Name
+ Hydra.Paths: _TypeReferenceLink :: Name
+ Hydra.Paths: _TypeReferenceLink_step :: Name
+ Hydra.Paths: _TypeReferenceLink_target :: Name
+ Hydra.Paths: _TypeReference_nominal :: Name
+ Hydra.Paths: _TypeReference_variable :: Name
+ Hydra.Paths: _TypeVariableReference :: Name
+ Hydra.Paths: _TypeVariableReference_boundByNode :: Name
+ Hydra.Paths: _TypeVariableReference_variable :: Name
+ Hydra.Paths: data LambdaVariableReference
+ Hydra.Paths: data LetVariableReference
+ Hydra.Paths: data NominalTypeReference
+ Hydra.Paths: data PrimitiveReference
+ Hydra.Paths: data TermAttributeLink
+ Hydra.Paths: data TermGraph
+ Hydra.Paths: data TermLink
+ Hydra.Paths: data TermNode
+ Hydra.Paths: data TermNodeId
+ Hydra.Paths: data TermReference
+ Hydra.Paths: data TermReferenceLink
+ Hydra.Paths: data TypeAttributeLink
+ Hydra.Paths: data TypeGraph
+ Hydra.Paths: data TypeLink
+ Hydra.Paths: data TypeNode
+ Hydra.Paths: data TypeNodeId
+ Hydra.Paths: data TypeReference
+ Hydra.Paths: data TypeReferenceLink
+ Hydra.Paths: data TypeVariableReference
+ Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.LambdaVariableReference
+ Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.LetVariableReference
+ Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.NominalTypeReference
+ Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.PrimitiveReference
+ Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.TermAttributeLink
+ Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.TermGraph
+ Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.TermLink
+ Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.TermNode
+ Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.TermNodeId
+ Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.TermReference
+ Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.TermReferenceLink
+ Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.TypeAttributeLink
+ Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.TypeGraph
+ Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.TypeLink
+ Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.TypeNode
+ Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.TypeNodeId
+ Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.TypeReference
+ Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.TypeReferenceLink
+ Hydra.Paths: instance GHC.Classes.Eq Hydra.Paths.TypeVariableReference
+ Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.LambdaVariableReference
+ Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.LetVariableReference
+ Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.NominalTypeReference
+ Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.PrimitiveReference
+ Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.TermAttributeLink
+ Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.TermGraph
+ Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.TermLink
+ Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.TermNode
+ Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.TermNodeId
+ Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.TermReference
+ Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.TermReferenceLink
+ Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.TypeAttributeLink
+ Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.TypeGraph
+ Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.TypeLink
+ Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.TypeNode
+ Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.TypeNodeId
+ Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.TypeReference
+ Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.TypeReferenceLink
+ Hydra.Paths: instance GHC.Classes.Ord Hydra.Paths.TypeVariableReference
+ Hydra.Paths: instance GHC.Read.Read Hydra.Paths.LambdaVariableReference
+ Hydra.Paths: instance GHC.Read.Read Hydra.Paths.LetVariableReference
+ Hydra.Paths: instance GHC.Read.Read Hydra.Paths.NominalTypeReference
+ Hydra.Paths: instance GHC.Read.Read Hydra.Paths.PrimitiveReference
+ Hydra.Paths: instance GHC.Read.Read Hydra.Paths.TermAttributeLink
+ Hydra.Paths: instance GHC.Read.Read Hydra.Paths.TermGraph
+ Hydra.Paths: instance GHC.Read.Read Hydra.Paths.TermLink
+ Hydra.Paths: instance GHC.Read.Read Hydra.Paths.TermNode
+ Hydra.Paths: instance GHC.Read.Read Hydra.Paths.TermNodeId
+ Hydra.Paths: instance GHC.Read.Read Hydra.Paths.TermReference
+ Hydra.Paths: instance GHC.Read.Read Hydra.Paths.TermReferenceLink
+ Hydra.Paths: instance GHC.Read.Read Hydra.Paths.TypeAttributeLink
+ Hydra.Paths: instance GHC.Read.Read Hydra.Paths.TypeGraph
+ Hydra.Paths: instance GHC.Read.Read Hydra.Paths.TypeLink
+ Hydra.Paths: instance GHC.Read.Read Hydra.Paths.TypeNode
+ Hydra.Paths: instance GHC.Read.Read Hydra.Paths.TypeNodeId
+ Hydra.Paths: instance GHC.Read.Read Hydra.Paths.TypeReference
+ Hydra.Paths: instance GHC.Read.Read Hydra.Paths.TypeReferenceLink
+ Hydra.Paths: instance GHC.Read.Read Hydra.Paths.TypeVariableReference
+ Hydra.Paths: instance GHC.Show.Show Hydra.Paths.LambdaVariableReference
+ Hydra.Paths: instance GHC.Show.Show Hydra.Paths.LetVariableReference
+ Hydra.Paths: instance GHC.Show.Show Hydra.Paths.NominalTypeReference
+ Hydra.Paths: instance GHC.Show.Show Hydra.Paths.PrimitiveReference
+ Hydra.Paths: instance GHC.Show.Show Hydra.Paths.TermAttributeLink
+ Hydra.Paths: instance GHC.Show.Show Hydra.Paths.TermGraph
+ Hydra.Paths: instance GHC.Show.Show Hydra.Paths.TermLink
+ Hydra.Paths: instance GHC.Show.Show Hydra.Paths.TermNode
+ Hydra.Paths: instance GHC.Show.Show Hydra.Paths.TermNodeId
+ Hydra.Paths: instance GHC.Show.Show Hydra.Paths.TermReference
+ Hydra.Paths: instance GHC.Show.Show Hydra.Paths.TermReferenceLink
+ Hydra.Paths: instance GHC.Show.Show Hydra.Paths.TypeAttributeLink
+ Hydra.Paths: instance GHC.Show.Show Hydra.Paths.TypeGraph
+ Hydra.Paths: instance GHC.Show.Show Hydra.Paths.TypeLink
+ Hydra.Paths: instance GHC.Show.Show Hydra.Paths.TypeNode
+ Hydra.Paths: instance GHC.Show.Show Hydra.Paths.TypeNodeId
+ Hydra.Paths: instance GHC.Show.Show Hydra.Paths.TypeReference
+ Hydra.Paths: instance GHC.Show.Show Hydra.Paths.TypeReferenceLink
+ Hydra.Paths: instance GHC.Show.Show Hydra.Paths.TypeVariableReference
+ Hydra.Print.Error.Packaging: moduleInMultiplePackagesError :: ModuleInMultiplePackagesError -> String
+ Hydra.Print.Error.Packaging: nestedModuleNameError :: NestedModuleNameError -> String
+ Hydra.Subterms: expectedForStep :: Map Name Type -> Type -> Term -> SubtermStep -> Maybe Type
+ Hydra.Subterms: fieldTypeFromSchema :: Map Name Type -> Term -> Name -> Maybe Type
+ Hydra.Subterms: findFieldTypeIn :: Name -> [FieldType] -> Maybe Type
+ Hydra.Subterms: graphToTermGraph :: Graph -> Either Error TermGraph
+ Hydra.Subterms: rootExpectedType :: Ord t0 => Map t0 t1 -> t0 -> Maybe t1
+ Hydra.Subterms: schemaToTypeGraph :: Map Name Type -> Either Error TypeGraph
+ Hydra.Subterms: synthesizeType :: t0 -> Map Name Type -> Map Name Type -> Name -> Maybe Type -> t1 -> Term -> Either Error Type
+ Hydra.Subterms: termAttributesOf :: Term -> [TermAttributeLink]
+ Hydra.Subterms: termGraphNode :: Graph -> Map Name Type -> Name -> Map Name (TermNodeId, Type) -> Set Name -> Maybe Type -> SubtermPath -> Term -> Either Error TermNode
+ Hydra.Subterms: termReferenceFor :: Graph -> Map Name (TermNodeId, Type) -> Set Name -> Name -> Either Error TermReference
+ Hydra.Subterms: typeAttributesOf :: Type -> [TypeAttributeLink]
+ Hydra.Subterms: typeGraphNode :: Set Name -> Name -> Map Name TypeNodeId -> SubtypePath -> Type -> Either Error TypeNode
+ Hydra.Subterms: typeLinks :: Set Name -> Name -> Map Name TypeNodeId -> SubtypePath -> Type -> Either Error [TypeLink]
+ Hydra.Subterms: typeReferenceFor :: Set Name -> Map Name TypeNodeId -> Name -> Either Error TypeReference
+ Hydra.Testing: [testCaseWithMetadataProvisions] :: TestCaseWithMetadata -> [Name]
+ Hydra.Testing: _TestCaseWithMetadata_provisions :: Name
+ Hydra.Util: CaseConventionUpperDashed :: CaseConvention
+ Hydra.Util: _CaseConvention_upperDashed :: Name
+ Hydra.Validate.Packaging: checkModulePartition :: [(String, [ModuleName])] -> [InvalidPackageError]
+ Hydra.Validate.Packaging: checkNestedModuleNames :: Package -> Maybe InvalidPackageError
+ Hydra.Validate.Paths: eraseSubtermPath :: SubtermPath -> Maybe SubtypePath
+ Hydra.Validate.Paths: eraseSubtermStep :: SubtermStep -> Maybe SubtypeStep
- Hydra.Dsl.Packaging: entityMetadata :: TypedTerm (Maybe String) -> TypedTerm [String] -> TypedTerm [EntityReference] -> TypedTerm (Maybe LifecycleInfo) -> TypedTerm EntityMetadata
+ Hydra.Dsl.Packaging: entityMetadata :: TypedTerm (Maybe String) -> TypedTerm [String] -> TypedTerm [EntityReference] -> TypedTerm (Maybe LifecycleInfo) -> TypedTerm [Provision] -> TypedTerm EntityMetadata
- Hydra.Dsl.Testing: testCaseWithMetadata :: TypedTerm String -> TypedTerm TestCase -> TypedTerm (Maybe String) -> TypedTerm [Tag] -> TypedTerm TestCaseWithMetadata
+ Hydra.Dsl.Testing: testCaseWithMetadata :: TypedTerm String -> TypedTerm TestCase -> TypedTerm (Maybe String) -> TypedTerm [Tag] -> TypedTerm [Name] -> TypedTerm TestCaseWithMetadata
- Hydra.Packaging: EntityMetadata :: Maybe String -> [String] -> [EntityReference] -> Maybe LifecycleInfo -> EntityMetadata
+ Hydra.Packaging: EntityMetadata :: Maybe String -> [String] -> [EntityReference] -> Maybe LifecycleInfo -> [Provision] -> EntityMetadata
- Hydra.Testing: TestCaseWithMetadata :: String -> TestCase -> Maybe String -> [Tag] -> TestCaseWithMetadata
+ Hydra.Testing: TestCaseWithMetadata :: String -> TestCase -> Maybe String -> [Tag] -> [Name] -> TestCaseWithMetadata
Files
- CHANGELOG.md +82/−0
- hydra-kernel.cabal +3/−2
- src/main/haskell/Hydra/Codegen.hs +2/−1
- src/main/haskell/Hydra/Decode/Error/Packaging.hs +29/−0
- src/main/haskell/Hydra/Decode/Packaging.hs +41/−2
- src/main/haskell/Hydra/Decode/Paths.hs +244/−151
- src/main/haskell/Hydra/Decode/Util.hs +4/−1
- src/main/haskell/Hydra/Decoding.hs +8/−3
- src/main/haskell/Hydra/Dsl/Error/Packaging.hs +207/−0
- src/main/haskell/Hydra/Dsl/Names.hs +16/−0
- src/main/haskell/Hydra/Dsl/Packaging.hs +222/−3
- src/main/haskell/Hydra/Dsl/Paths.hs +1744/−1263
- src/main/haskell/Hydra/Dsl/Testing.hs +82/−4
- src/main/haskell/Hydra/Dsl/Util.hs +9/−0
- src/main/haskell/Hydra/Dsls.hs +2/−1
- src/main/haskell/Hydra/Encode/Error/Packaging.hs +39/−0
- src/main/haskell/Hydra/Encode/Packaging.hs +35/−1
- src/main/haskell/Hydra/Encode/Paths.hs +290/−176
- src/main/haskell/Hydra/Encode/Util.hs +5/−0
- src/main/haskell/Hydra/Encoding.hs +2/−1
- src/main/haskell/Hydra/Error/Packaging.hs +42/−0
- src/main/haskell/Hydra/Formatting.hs +3/−0
- src/main/haskell/Hydra/Json/Bootstrap.hs +69/−2
- src/main/haskell/Hydra/Json/Decode.hs +12/−10
- src/main/haskell/Hydra/Json/Parser.hs +1/−1
- src/main/haskell/Hydra/Json/Writer.hs +5/−1
- src/main/haskell/Hydra/Lib/Chars.hs +16/−8
- src/main/haskell/Hydra/Lib/Effects.hs +18/−9
- src/main/haskell/Hydra/Lib/Eithers.hs +34/−17
- src/main/haskell/Hydra/Lib/Equality.hs +4/−2
- src/main/haskell/Hydra/Lib/Files.hs +26/−13
- src/main/haskell/Hydra/Lib/Functions.hs +10/−5
- src/main/haskell/Hydra/Lib/Hashing.hs +4/−2
- src/main/haskell/Hydra/Lib/Lists.hs +84/−42
- src/main/haskell/Hydra/Lib/Literals.hs +110/−55
- src/main/haskell/Hydra/Lib/Logic.hs +8/−4
- src/main/haskell/Hydra/Lib/Maps.hs +46/−23
- src/main/haskell/Hydra/Lib/Math.hs +86/−43
- src/main/haskell/Hydra/Lib/Optionals.hs +30/−15
- src/main/haskell/Hydra/Lib/Ordering.hs +14/−7
- src/main/haskell/Hydra/Lib/Pairs.hs +8/−4
- src/main/haskell/Hydra/Lib/Regex.hs +12/−6
- src/main/haskell/Hydra/Lib/Sets.hs +30/−15
- src/main/haskell/Hydra/Lib/Strings.hs +22/−11
- src/main/haskell/Hydra/Lib/System.hs +18/−9
- src/main/haskell/Hydra/Lib/Text.hs +4/−2
- src/main/haskell/Hydra/Names.hs +16/−0
- src/main/haskell/Hydra/Overlay/Haskell/Bootstrap.hs +1/−1
- src/main/haskell/Hydra/Overlay/Haskell/Dsl/Typed/Phantoms.hs +2/−2
- src/main/haskell/Hydra/Overlay/Haskell/Dsl/Typed/Testing.hs +49/−5
- src/main/haskell/Hydra/Overlay/Haskell/Lib/Literals.hs +41/−6
- src/main/haskell/Hydra/Overlay/Haskell/Libraries.hs +200/−11
- src/main/haskell/Hydra/Packaging.hs +39/−2
- src/main/haskell/Hydra/Paths.hs +311/−191
- src/main/haskell/Hydra/Print/Error/Packaging.hs +22/−0
- src/main/haskell/Hydra/Print/Paths.hs +2/−3
- src/main/haskell/Hydra/Print/Util.hs +1/−0
- src/main/haskell/Hydra/Rewriting.hs +10/−8
- src/main/haskell/Hydra/Shredding.hs +0/−216
- src/main/haskell/Hydra/Subterms.hs +354/−0
- src/main/haskell/Hydra/Templates.hs +1/−1
- src/main/haskell/Hydra/Test/Transform.hs +2/−1
- src/main/haskell/Hydra/Test/Utils.hs +3/−1
- src/main/haskell/Hydra/Testing.hs +5/−1
- src/main/haskell/Hydra/Util.hs +4/−1
- src/main/haskell/Hydra/Validate/Core.hs +15/−3
- src/main/haskell/Hydra/Validate/Packaging.hs +51/−3
- src/main/haskell/Hydra/Validate/Paths.hs +74/−0
CHANGELOG.md view
@@ -15,6 +15,88 @@ --- +## [0.17.7] - 2026-09-14++Correctness-hardening point release on the 0.17.x line, consolidating the 0.17.6 breaking batch. It+closes a family of silent cross-host correctness bugs in the equality, ordering, integer-narrowing+and string primitives, and adds the systematic test coverage that exposed them. No kernel-surface+breaking changes.++### Highlights++- **Silent-wrong primitives corrected across hosts**+ ([#745](https://github.com/CategoricalData/hydra/issues/745),+ [#742](https://github.com/CategoricalData/hydra/issues/742)): new shared cross-host fixtures+ uncovered ~a dozen primitives (`equal`/`compare` on collections, float equality, `bigintToIntN`+ narrowing, `parseUint*` bounds, astral-plane string ops) that returned wrong results on one or more+ non-Haskell hosts while appearing to pass. All are now correct and verified per-host against the+ Haskell reference oracle.+- **Systematic test-coverage hardening**+ ([#749](https://github.com/CategoricalData/hydra/issues/749)): new kernel coverage for previously+ untested primitive behavior (equality/ordering collection depth, `notEqual`, `functions.const`/`flip`),+ which drove wiring those primitives into every host's default-implementation fallback.+- **Scale-preserving decimals across every lossy-double host**+ ([#727](https://github.com/CategoricalData/hydra/issues/727),+ [#719](https://github.com/CategoricalData/hydra/issues/719)): `Literal.decimal` gains a real+ scale-preserving representation (coefficient + scale) in the Scheme, Emacs Lisp, Common Lisp and+ TypeScript runtimes and coders, and the generated `Literal.Decimal` `equals`/`compareTo` on Java,+ Python and Scala stop ignoring scale. The `scaleDistinctTestNames` skip list — which had been+ masking the gap on five hosts — is deleted, so decimal scale is now verified everywhere rather+ than excused.++### Bug fixes++- **[#745](https://github.com/CategoricalData/hydra/issues/745)** silent-wrong equality/ordering,+ `bigintToIntN` narrowing, `parseUint32/64` bounds, and astral-plane `charAt`/`splitOn`/`compare`+ across the eight non-Haskell hosts.+- **[#742](https://github.com/CategoricalData/hydra/issues/742)** structural `equal`/`compare` on+ maps, sets and nested decimals no longer falls back to scale-blind or print-based comparison+ (including a hand-inlined Scala primitive that shadowed the overlay fix).+- **[#743](https://github.com/CategoricalData/hydra/issues/743)** kernel JSON decoder now rejects an+ `Either` object carrying both `left` and `right` keys instead of silently resolving one arm.+- **[#740](https://github.com/CategoricalData/hydra/issues/740)** the recursive parametric union decoder+ now emits an explicit type application instead of an untyped lambda, so recursive parametric-union+ types generate and compile on the Java host; also fixes `update-json-kernel` reconcile to build a+ complete inference universe so drifted kernel modules re-infer.+- **[#720](https://github.com/CategoricalData/hydra/issues/720)** Python's+ `hydra.lib.equality`/`ordering` did not satisfy IEEE `totalOrder` for floats, mis-ordering `NaN`+ and signed zero.+- **[#722](https://github.com/CategoricalData/hydra/issues/722)** two `kernelDefaultCoreProfile`+ correctness defects: rule ids that referred to rules no longer present, and a stubbed+ `isValidName` that accepted every name.++### Improvements++- **[#749](https://github.com/CategoricalData/hydra/issues/749)** `notEqual`/`const`/`flip` wired+ into each host's `#609` default-implementation fallback; orphaned Avro coder test suite recovered.+- **[#730](https://github.com/CategoricalData/hydra/issues/730)** a shared `~/.stack` build slot+ (`bin/with-stack-slot.sh`) replaces the pgrep slot mechanic, serializing concurrent GHC builds+ across the fleet behind a real mutex. The wrapper is now portable to macOS: `flock(1)` is+ util-linux and absent there, so it is emulated via Perl's `flock()` where missing, and the+ GNU-only `date -Is`/`date -d` calls are replaced with portable equivalents. Its bypass path also+ no longer re-execs forever. Without these, every entry point that routes through the slot —+ `bin/sync.sh`, `bin/test.sh`, `bin/run-bootstrapping-demo.sh` and `bin/prepare-release.sh` —+ failed immediately on macOS.+- **[#600](https://github.com/CategoricalData/hydra/issues/600)** the five published TypeScript+ packages are subpath-import-only (uniform export surface).+- **[#716](https://github.com/CategoricalData/hydra/issues/716)** `hydra.paths` reshaped onto the+ term-graph model (`TermGraph`/`TypeGraph`), aligning path steps with the term and type grammars+ and adding the link view of a graph; `mapKey`/`mapValue` collapse into a single `mapEntry` step.+- **[#701](https://github.com/CategoricalData/hydra/issues/701)** module cache freshness is now a+ Merkle hash over each module's dependency closure, so a change deep in the closure correctly+ invalidates dependents.+- **[#559](https://github.com/CategoricalData/hydra/issues/559)** host-agnostic build: the+ remaining hand-coded host build logic is promoted into `hydra.build.*`, with Java as the+ definitive second host.+- **[#721](https://github.com/CategoricalData/hydra/issues/721)** `checkNestedModuleNames` packaging+ check enforces the module-namespace no-prefix rule.++### Documentation++- **[#508](https://github.com/CategoricalData/hydra/issues/508)** de-Claude-speak documentation pass:+ style-guide section added, stale paths and dead links repaired, agent-operations wiki pages moved+ into `claude/`, and a `getting-started.md` guardrail against re-adding a TypeScript root export.+ ## [0.17.6] - 2026-08-30 Point release on the 0.17.x line, and the last backward-incompatible batch before the 1.0 surface
hydra-kernel.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: hydra-kernel-version: 0.17.6+version: 0.17.7 synopsis: The Hydra kernel: core types, terms, inference, and DSL runtime 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 the Hydra kernel: the core type and term model, type inference, the term rewriting and reduction engine, the primitive library, and the DSL runtime — the code that must be present in every Hydra implementation. The convenient entry point is the Hydra.Kernel module, which re-exports the kernel's collision-free surface. category: Data@@ -309,10 +309,10 @@ Hydra.Scoping Hydra.Serialization Hydra.Settings- Hydra.Shredding Hydra.Sorting Hydra.Strip Hydra.Substitution+ Hydra.Subterms Hydra.System Hydra.Tabular Hydra.Templates@@ -327,6 +327,7 @@ Hydra.Util Hydra.Validate.Core Hydra.Validate.Packaging+ Hydra.Validate.Paths Hydra.Validation Hydra.Variables Hydra.Variants
src/main/haskell/Hydra/Codegen.hs view
@@ -499,7 +499,8 @@ Packaging.entityMetadataDescription = (Just (Strings.concat2 "Source module for " (Packaging.unModuleName (Packaging.moduleName m)))), Packaging.entityMetadataComments = [], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.moduleDependencies = [ Packaging.ModuleDependency { Packaging.moduleDependencyModule = modTypeNs,
src/main/haskell/Hydra/Decode/Error/Packaging.hs view
@@ -173,6 +173,12 @@ Core.Name "invalidPackageName", (\input -> Eithers.map (\t -> ErrorPackaging.InvalidPackageErrorInvalidPackageName t) (invalidPackageNameError cx input))), (+ Core.Name "moduleInMultiplePackages",+ (\input -> Eithers.map (\t -> ErrorPackaging.InvalidPackageErrorModuleInMultiplePackages t) (moduleInMultiplePackagesError cx input))),+ (+ Core.Name "nestedModuleName",+ (\input -> Eithers.map (\t -> ErrorPackaging.InvalidPackageErrorNestedModuleName t) (nestedModuleNameError cx input))),+ ( Core.Name "undeclaredDependency", (\input -> Eithers.map (\t -> ErrorPackaging.InvalidPackageErrorUndeclaredDependency t) (undeclaredDependencyError cx input)))] in (Optionals.match (Maps.lookup fname variantMap) (Left (Errors.DecodingError (Strings.concat [@@ -201,6 +207,29 @@ ErrorPackaging.missingDocumentationErrorModuleName = field_moduleName, ErrorPackaging.missingDocumentationErrorName = field_name})))) _ -> Left (Errors.DecodingError "expected a record of type hydra.error.packaging.MissingDocumentationError")) (ExtractCore.stripWithDecodingError cx raw)++-- | Decoder for hydra.error.packaging.ModuleInMultiplePackagesError+moduleInMultiplePackagesError :: Graph.Graph -> Core.Term -> Either Errors.DecodingError ErrorPackaging.ModuleInMultiplePackagesError+moduleInMultiplePackagesError cx raw =+ Eithers.either (\err -> Left err) (\stripped -> case stripped of+ Core.TermRecord v0 ->+ let fieldMap = ExtractCore.toFieldMap v0+ in (Eithers.bind (ExtractCore.requireField "moduleName" DecodePackaging.moduleName fieldMap cx) (\field_moduleName -> Eithers.bind (ExtractCore.requireField "firstPackage" DecodePackaging.packageName fieldMap cx) (\field_firstPackage -> Eithers.bind (ExtractCore.requireField "secondPackage" DecodePackaging.packageName fieldMap cx) (\field_secondPackage -> Right (ErrorPackaging.ModuleInMultiplePackagesError {+ ErrorPackaging.moduleInMultiplePackagesErrorModuleName = field_moduleName,+ ErrorPackaging.moduleInMultiplePackagesErrorFirstPackage = field_firstPackage,+ ErrorPackaging.moduleInMultiplePackagesErrorSecondPackage = field_secondPackage})))))+ _ -> Left (Errors.DecodingError "expected a record of type hydra.error.packaging.ModuleInMultiplePackagesError")) (ExtractCore.stripWithDecodingError cx raw)++-- | Decoder for hydra.error.packaging.NestedModuleNameError+nestedModuleNameError :: Graph.Graph -> Core.Term -> Either Errors.DecodingError ErrorPackaging.NestedModuleNameError+nestedModuleNameError cx raw =+ Eithers.either (\err -> Left err) (\stripped -> case stripped of+ Core.TermRecord v0 ->+ let fieldMap = ExtractCore.toFieldMap v0+ in (Eithers.bind (ExtractCore.requireField "outer" DecodePackaging.moduleName fieldMap cx) (\field_outer -> Eithers.bind (ExtractCore.requireField "inner" DecodePackaging.moduleName fieldMap cx) (\field_inner -> Right (ErrorPackaging.NestedModuleNameError {+ ErrorPackaging.nestedModuleNameErrorOuter = field_outer,+ ErrorPackaging.nestedModuleNameErrorInner = field_inner}))))+ _ -> Left (Errors.DecodingError "expected a record of type hydra.error.packaging.NestedModuleNameError")) (ExtractCore.stripWithDecodingError cx raw) -- | Decoder for hydra.error.packaging.UndeclaredDependencyError undeclaredDependencyError :: Graph.Graph -> Core.Term -> Either Errors.DecodingError ErrorPackaging.UndeclaredDependencyError
src/main/haskell/Hydra/Decode/Packaging.hs view
@@ -96,11 +96,12 @@ Core.TermLiteral v1 -> case v1 of Core.LiteralString v2 -> Right v2 _ -> Left (Errors.DecodingError "expected string literal")- _ -> Left (Errors.DecodingError "expected literal")) (ExtractCore.stripWithDecodingError cx2 raw2))) fieldMap cx) (\field_comments -> Eithers.bind (ExtractCore.requireField "seeAlso" (ExtractCore.decodeList entityReference) fieldMap cx) (\field_seeAlso -> Eithers.bind (ExtractCore.requireField "lifecycle" (ExtractCore.decodeMaybe lifecycleInfo) fieldMap cx) (\field_lifecycle -> Right (Packaging.EntityMetadata {+ _ -> Left (Errors.DecodingError "expected literal")) (ExtractCore.stripWithDecodingError cx2 raw2))) fieldMap cx) (\field_comments -> Eithers.bind (ExtractCore.requireField "seeAlso" (ExtractCore.decodeList entityReference) fieldMap cx) (\field_seeAlso -> Eithers.bind (ExtractCore.requireField "lifecycle" (ExtractCore.decodeMaybe lifecycleInfo) fieldMap cx) (\field_lifecycle -> Eithers.bind (ExtractCore.requireField "provisions" (ExtractCore.decodeList provision) fieldMap cx) (\field_provisions -> Right (Packaging.EntityMetadata { Packaging.entityMetadataDescription = field_description, Packaging.entityMetadataComments = field_comments, Packaging.entityMetadataSeeAlso = field_seeAlso,- Packaging.entityMetadataLifecycle = field_lifecycle}))))))+ Packaging.entityMetadataLifecycle = field_lifecycle,+ Packaging.entityMetadataProvisions = field_provisions}))))))) _ -> Left (Errors.DecodingError "expected a record of type hydra.packaging.EntityMetadata")) (ExtractCore.stripWithDecodingError cx raw) -- | Decoder for hydra.packaging.EntityReference@@ -242,6 +243,44 @@ Packaging.primitiveDefinitionIsTotal = field_isTotal, Packaging.primitiveDefinitionDefaultImplementation = field_defaultImplementation})))))))) _ -> Left (Errors.DecodingError "expected a record of type hydra.packaging.PrimitiveDefinition")) (ExtractCore.stripWithDecodingError cx raw)++-- | Decoder for hydra.packaging.Provision+provision :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Packaging.Provision+provision cx raw =+ Eithers.either (\err -> Left err) (\stripped -> case stripped of+ Core.TermRecord v0 ->+ let fieldMap = ExtractCore.toFieldMap v0+ in (Eithers.bind (ExtractCore.requireField "name" DecodeCore.name fieldMap cx) (\field_name -> Eithers.bind (ExtractCore.requireField "kind" provisionKind fieldMap cx) (\field_kind -> Eithers.bind (ExtractCore.requireField "statement" (\cx2 -> \raw2 -> Eithers.either (\err -> Left err) (\stripped2 -> case stripped2 of+ Core.TermLiteral v1 -> case v1 of+ Core.LiteralString v2 -> Right v2+ _ -> Left (Errors.DecodingError "expected string literal")+ _ -> Left (Errors.DecodingError "expected literal")) (ExtractCore.stripWithDecodingError cx2 raw2)) fieldMap cx) (\field_statement -> Right (Packaging.Provision {+ Packaging.provisionName = field_name,+ Packaging.provisionKind = field_kind,+ Packaging.provisionStatement = field_statement})))))+ _ -> Left (Errors.DecodingError "expected a record of type hydra.packaging.Provision")) (ExtractCore.stripWithDecodingError cx raw)++-- | Decoder for hydra.packaging.ProvisionKind+provisionKind :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Packaging.ProvisionKind+provisionKind cx raw =+ Eithers.either (\err -> Left err) (\stripped -> case stripped of+ Core.TermInject v0 ->+ let field = Core.injectionField v0+ fname = Core.fieldName field+ fterm = Core.fieldTerm field+ variantMap =+ Maps.fromList [+ (+ Core.Name "requirement",+ (\input -> Eithers.map (\t -> Packaging.ProvisionKindRequirement) (ExtractCore.decodeUnit cx input))),+ (+ Core.Name "recommendation",+ (\input -> Eithers.map (\t -> Packaging.ProvisionKindRecommendation) (ExtractCore.decodeUnit cx input)))]+ in (Optionals.match (Maps.lookup fname variantMap) (Left (Errors.DecodingError (Strings.concat [+ "no such field ",+ (Core.unName fname),+ " in union"]))) (\f -> f fterm))+ _ -> Left (Errors.DecodingError "expected union")) (ExtractCore.stripWithDecodingError cx raw) -- | Decoder for hydra.packaging.TermDefinition termDefinition :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Packaging.TermDefinition
src/main/haskell/Hydra/Decode/Paths.hs view
@@ -21,68 +21,61 @@ import qualified Data.Scientific as Sci import Data.Void --- | Decoder for hydra.paths.SubtermAttribute-subtermAttribute :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.SubtermAttribute-subtermAttribute cx raw =+-- | Decoder for hydra.paths.LambdaVariableReference+lambdaVariableReference :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.LambdaVariableReference+lambdaVariableReference cx raw = Eithers.either (\err -> Left err) (\stripped -> case stripped of Core.TermRecord v0 -> let fieldMap = ExtractCore.toFieldMap v0- in (Eithers.bind (ExtractCore.requireField "path" subtermPath fieldMap cx) (\field_path -> Eithers.bind (ExtractCore.requireField "target" termAttribute fieldMap cx) (\field_target -> Right (Paths.SubtermAttribute {- Paths.subtermAttributePath = field_path,- Paths.subtermAttributeTarget = field_target}))))- _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.SubtermAttribute")) (ExtractCore.stripWithDecodingError cx raw)+ in (Eithers.bind (ExtractCore.requireField "variable" DecodeCore.name fieldMap cx) (\field_variable -> Eithers.bind (ExtractCore.requireField "boundByNode" termNodeId fieldMap cx) (\field_boundByNode -> Eithers.bind (ExtractCore.requireField "type" DecodeCore.type_ fieldMap cx) (\field_type -> Right (Paths.LambdaVariableReference {+ Paths.lambdaVariableReferenceVariable = field_variable,+ Paths.lambdaVariableReferenceBoundByNode = field_boundByNode,+ Paths.lambdaVariableReferenceType = field_type})))))+ _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.LambdaVariableReference")) (ExtractCore.stripWithDecodingError cx raw) --- | Decoder for hydra.paths.SubtermEdge-subtermEdge :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.SubtermEdge-subtermEdge cx raw =+-- | Decoder for hydra.paths.LetVariableReference+letVariableReference :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.LetVariableReference+letVariableReference cx raw = Eithers.either (\err -> Left err) (\stripped -> case stripped of Core.TermRecord v0 -> let fieldMap = ExtractCore.toFieldMap v0- in (Eithers.bind (ExtractCore.requireField "path" subtermPath fieldMap cx) (\field_path -> Eithers.bind (ExtractCore.requireField "target" DecodeCore.name fieldMap cx) (\field_target -> Right (Paths.SubtermEdge {- Paths.subtermEdgePath = field_path,- Paths.subtermEdgeTarget = field_target}))))- _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.SubtermEdge")) (ExtractCore.stripWithDecodingError cx raw)+ in (Eithers.bind (ExtractCore.requireField "variable" DecodeCore.name fieldMap cx) (\field_variable -> Eithers.bind (ExtractCore.requireField "bindingNode" termNodeId fieldMap cx) (\field_bindingNode -> Eithers.bind (ExtractCore.requireField "type" DecodeCore.type_ fieldMap cx) (\field_type -> Right (Paths.LetVariableReference {+ Paths.letVariableReferenceVariable = field_variable,+ Paths.letVariableReferenceBindingNode = field_bindingNode,+ Paths.letVariableReferenceType = field_type})))))+ _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.LetVariableReference")) (ExtractCore.stripWithDecodingError cx raw) --- | Decoder for hydra.paths.SubtermGraph-subtermGraph :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.SubtermGraph-subtermGraph cx raw =+-- | Decoder for hydra.paths.NominalTypeReference+nominalTypeReference :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.NominalTypeReference+nominalTypeReference cx raw = Eithers.either (\err -> Left err) (\stripped -> case stripped of Core.TermRecord v0 -> let fieldMap = ExtractCore.toFieldMap v0- in (Eithers.bind (ExtractCore.requireField "nodes" (ExtractCore.decodeList subtermNode) fieldMap cx) (\field_nodes -> Right (Paths.SubtermGraph {- Paths.subtermGraphNodes = field_nodes})))- _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.SubtermGraph")) (ExtractCore.stripWithDecodingError cx raw)+ in (Eithers.bind (ExtractCore.requireField "name" DecodeCore.name fieldMap cx) (\field_name -> Right (Paths.NominalTypeReference {+ Paths.nominalTypeReferenceName = field_name})))+ _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.NominalTypeReference")) (ExtractCore.stripWithDecodingError cx raw) +-- | Decoder for hydra.paths.PrimitiveReference+primitiveReference :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.PrimitiveReference+primitiveReference cx raw =+ Eithers.either (\err -> Left err) (\stripped -> case stripped of+ Core.TermRecord v0 ->+ let fieldMap = ExtractCore.toFieldMap v0+ in (Eithers.bind (ExtractCore.requireField "name" DecodeCore.name fieldMap cx) (\field_name -> Eithers.bind (ExtractCore.requireField "type" DecodeCore.type_ fieldMap cx) (\field_type -> Right (Paths.PrimitiveReference {+ Paths.primitiveReferenceName = field_name,+ Paths.primitiveReferenceType = field_type}))))+ _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.PrimitiveReference")) (ExtractCore.stripWithDecodingError cx raw)+ -- | Decoder for hydra.paths.SubtermLink subtermLink :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.SubtermLink subtermLink cx raw = Eithers.either (\err -> Left err) (\stripped -> case stripped of- Core.TermInject v0 ->- let field = Core.injectionField v0- fname = Core.fieldName field- fterm = Core.fieldTerm field- variantMap =- Maps.fromList [- (Core.Name "edge", (\input -> Eithers.map (\t -> Paths.SubtermLinkEdge t) (subtermEdge cx input))),- (Core.Name "property", (\input -> Eithers.map (\t -> Paths.SubtermLinkProperty t) (subtermProperty cx input))),- (Core.Name "attribute", (\input -> Eithers.map (\t -> Paths.SubtermLinkAttribute t) (subtermAttribute cx input)))]- in (Optionals.match (Maps.lookup fname variantMap) (Left (Errors.DecodingError (Strings.concat [- "no such field ",- (Core.unName fname),- " in union"]))) (\f -> f fterm))- _ -> Left (Errors.DecodingError "expected union")) (ExtractCore.stripWithDecodingError cx raw)---- | Decoder for hydra.paths.SubtermNode-subtermNode :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.SubtermNode-subtermNode cx raw =- Eithers.either (\err -> Left err) (\stripped -> case stripped of Core.TermRecord v0 -> let fieldMap = ExtractCore.toFieldMap v0- in (Eithers.bind (ExtractCore.requireField "name" DecodeCore.name fieldMap cx) (\field_name -> Eithers.bind (ExtractCore.requireField "type" DecodeCore.typeScheme fieldMap cx) (\field_type -> Eithers.bind (ExtractCore.requireField "links" (ExtractCore.decodeList subtermLink) fieldMap cx) (\field_links -> Right (Paths.SubtermNode {- Paths.subtermNodeName = field_name,- Paths.subtermNodeType = field_type,- Paths.subtermNodeLinks = field_links})))))- _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.SubtermNode")) (ExtractCore.stripWithDecodingError cx raw)+ in (Eithers.bind (ExtractCore.requireField "step" subtermStep fieldMap cx) (\field_step -> Eithers.bind (ExtractCore.requireField "child" termNode fieldMap cx) (\field_child -> Right (Paths.SubtermLink {+ Paths.subtermLinkStep = field_step,+ Paths.subtermLinkChild = field_child}))))+ _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.SubtermLink")) (ExtractCore.stripWithDecodingError cx raw) -- | Decoder for hydra.paths.SubtermPath subtermPath :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.SubtermPath@@ -91,17 +84,6 @@ Core.TermWrap v0 -> Eithers.map (\b -> Paths.SubtermPath b) (ExtractCore.decodeList subtermStep cx (Core.wrappedTermBody v0)) _ -> Left (Errors.DecodingError "expected wrapped type")) (ExtractCore.stripWithDecodingError cx raw) --- | Decoder for hydra.paths.SubtermProperty-subtermProperty :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.SubtermProperty-subtermProperty cx raw =- Eithers.either (\err -> Left err) (\stripped -> case stripped of- Core.TermRecord v0 ->- let fieldMap = ExtractCore.toFieldMap v0- in (Eithers.bind (ExtractCore.requireField "path" subtermPath fieldMap cx) (\field_path -> Eithers.bind (ExtractCore.requireField "target" DecodeCore.term fieldMap cx) (\field_target -> Right (Paths.SubtermProperty {- Paths.subtermPropertyPath = field_path,- Paths.subtermPropertyTarget = field_target}))))- _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.SubtermProperty")) (ExtractCore.stripWithDecodingError cx raw)- -- | Decoder for hydra.paths.SubtermStep subtermStep :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.SubtermStep subtermStep cx raw =@@ -144,17 +126,8 @@ _ -> Left (Errors.DecodingError "expected int32 literal") _ -> Left (Errors.DecodingError "expected literal")) (ExtractCore.stripWithDecodingError cx input)))), (- Core.Name "mapKey",- (\input -> Eithers.map (\t -> Paths.SubtermStepMapKey t) (Eithers.either (\err -> Left err) (\stripped2 -> case stripped2 of- Core.TermLiteral v1 -> case v1 of- Core.LiteralInteger v2 -> case v2 of- Core.IntegerValueInt32 v3 -> Right v3- _ -> Left (Errors.DecodingError "expected int32 value")- _ -> Left (Errors.DecodingError "expected int32 literal")- _ -> Left (Errors.DecodingError "expected literal")) (ExtractCore.stripWithDecodingError cx input)))),- (- Core.Name "mapValue",- (\input -> Eithers.map (\t -> Paths.SubtermStepMapValue t) (Eithers.either (\err -> Left err) (\stripped2 -> case stripped2 of+ Core.Name "mapEntry",+ (\input -> Eithers.map (\t -> Paths.SubtermStepMapEntry t) (Eithers.either (\err -> Left err) (\stripped2 -> case stripped2 of Core.TermLiteral v1 -> case v1 of Core.LiteralInteger v2 -> case v2 of Core.IntegerValueInt32 v3 -> Right v3@@ -189,67 +162,16 @@ " in union"]))) (\f -> f fterm)) _ -> Left (Errors.DecodingError "expected union")) (ExtractCore.stripWithDecodingError cx raw) --- | Decoder for hydra.paths.SubtypeAttribute-subtypeAttribute :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.SubtypeAttribute-subtypeAttribute cx raw =- Eithers.either (\err -> Left err) (\stripped -> case stripped of- Core.TermRecord v0 ->- let fieldMap = ExtractCore.toFieldMap v0- in (Eithers.bind (ExtractCore.requireField "path" subtypePath fieldMap cx) (\field_path -> Eithers.bind (ExtractCore.requireField "target" typeAttribute fieldMap cx) (\field_target -> Right (Paths.SubtypeAttribute {- Paths.subtypeAttributePath = field_path,- Paths.subtypeAttributeTarget = field_target}))))- _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.SubtypeAttribute")) (ExtractCore.stripWithDecodingError cx raw)---- | Decoder for hydra.paths.SubtypeEdge-subtypeEdge :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.SubtypeEdge-subtypeEdge cx raw =- Eithers.either (\err -> Left err) (\stripped -> case stripped of- Core.TermRecord v0 ->- let fieldMap = ExtractCore.toFieldMap v0- in (Eithers.bind (ExtractCore.requireField "path" subtypePath fieldMap cx) (\field_path -> Eithers.bind (ExtractCore.requireField "target" DecodeCore.name fieldMap cx) (\field_target -> Right (Paths.SubtypeEdge {- Paths.subtypeEdgePath = field_path,- Paths.subtypeEdgeTarget = field_target}))))- _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.SubtypeEdge")) (ExtractCore.stripWithDecodingError cx raw)---- | Decoder for hydra.paths.SubtypeGraph-subtypeGraph :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.SubtypeGraph-subtypeGraph cx raw =- Eithers.either (\err -> Left err) (\stripped -> case stripped of- Core.TermRecord v0 ->- let fieldMap = ExtractCore.toFieldMap v0- in (Eithers.bind (ExtractCore.requireField "nodes" (ExtractCore.decodeList subtypeNode) fieldMap cx) (\field_nodes -> Right (Paths.SubtypeGraph {- Paths.subtypeGraphNodes = field_nodes})))- _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.SubtypeGraph")) (ExtractCore.stripWithDecodingError cx raw)- -- | Decoder for hydra.paths.SubtypeLink subtypeLink :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.SubtypeLink subtypeLink cx raw = Eithers.either (\err -> Left err) (\stripped -> case stripped of- Core.TermInject v0 ->- let field = Core.injectionField v0- fname = Core.fieldName field- fterm = Core.fieldTerm field- variantMap =- Maps.fromList [- (Core.Name "edge", (\input -> Eithers.map (\t -> Paths.SubtypeLinkEdge t) (subtypeEdge cx input))),- (Core.Name "property", (\input -> Eithers.map (\t -> Paths.SubtypeLinkProperty t) (subtypeProperty cx input))),- (Core.Name "attribute", (\input -> Eithers.map (\t -> Paths.SubtypeLinkAttribute t) (subtypeAttribute cx input)))]- in (Optionals.match (Maps.lookup fname variantMap) (Left (Errors.DecodingError (Strings.concat [- "no such field ",- (Core.unName fname),- " in union"]))) (\f -> f fterm))- _ -> Left (Errors.DecodingError "expected union")) (ExtractCore.stripWithDecodingError cx raw)---- | Decoder for hydra.paths.SubtypeNode-subtypeNode :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.SubtypeNode-subtypeNode cx raw =- Eithers.either (\err -> Left err) (\stripped -> case stripped of Core.TermRecord v0 -> let fieldMap = ExtractCore.toFieldMap v0- in (Eithers.bind (ExtractCore.requireField "name" DecodeCore.name fieldMap cx) (\field_name -> Eithers.bind (ExtractCore.requireField "links" (ExtractCore.decodeList subtypeLink) fieldMap cx) (\field_links -> Right (Paths.SubtypeNode {- Paths.subtypeNodeName = field_name,- Paths.subtypeNodeLinks = field_links}))))- _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.SubtypeNode")) (ExtractCore.stripWithDecodingError cx raw)+ in (Eithers.bind (ExtractCore.requireField "step" subtypeStep fieldMap cx) (\field_step -> Eithers.bind (ExtractCore.requireField "child" typeNode fieldMap cx) (\field_child -> Right (Paths.SubtypeLink {+ Paths.subtypeLinkStep = field_step,+ Paths.subtypeLinkChild = field_child}))))+ _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.SubtypeLink")) (ExtractCore.stripWithDecodingError cx raw) -- | Decoder for hydra.paths.SubtypePath subtypePath :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.SubtypePath@@ -258,17 +180,6 @@ Core.TermWrap v0 -> Eithers.map (\b -> Paths.SubtypePath b) (ExtractCore.decodeList subtypeStep cx (Core.wrappedTermBody v0)) _ -> Left (Errors.DecodingError "expected wrapped type")) (ExtractCore.stripWithDecodingError cx raw) --- | Decoder for hydra.paths.SubtypeProperty-subtypeProperty :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.SubtypeProperty-subtypeProperty cx raw =- Eithers.either (\err -> Left err) (\stripped -> case stripped of- Core.TermRecord v0 ->- let fieldMap = ExtractCore.toFieldMap v0- in (Eithers.bind (ExtractCore.requireField "path" subtypePath fieldMap cx) (\field_path -> Eithers.bind (ExtractCore.requireField "target" DecodeCore.type_ fieldMap cx) (\field_target -> Right (Paths.SubtypeProperty {- Paths.subtypePropertyPath = field_path,- Paths.subtypePropertyTarget = field_target}))))- _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.SubtypeProperty")) (ExtractCore.stripWithDecodingError cx raw)- -- | Decoder for hydra.paths.SubtypeStep subtypeStep :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.SubtypeStep subtypeStep cx raw =@@ -316,9 +227,9 @@ " in union"]))) (\f -> f fterm)) _ -> Left (Errors.DecodingError "expected union")) (ExtractCore.stripWithDecodingError cx raw) --- | Decoder for hydra.paths.TermAttribute-termAttribute :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.TermAttribute-termAttribute cx raw =+-- | Decoder for hydra.paths.TermAttributeLink+termAttributeLink :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.TermAttributeLink+termAttributeLink cx raw = Eithers.either (\err -> Left err) (\stripped -> case stripped of Core.TermInject v0 -> let field = Core.injectionField v0@@ -326,59 +237,241 @@ fterm = Core.fieldTerm field variantMap = Maps.fromList [- (Core.Name "casesTypeName", (\input -> Eithers.map (\t -> Paths.TermAttributeCasesTypeName t) (DecodeCore.name cx input))), (+ Core.Name "casesTypeName",+ (\input -> Eithers.map (\t -> Paths.TermAttributeLinkCasesTypeName t) (DecodeCore.name cx input))),+ ( Core.Name "injectTypeName",- (\input -> Eithers.map (\t -> Paths.TermAttributeInjectTypeName t) (DecodeCore.name cx input))),+ (\input -> Eithers.map (\t -> Paths.TermAttributeLinkInjectTypeName t) (DecodeCore.name cx input))), ( Core.Name "lambdaDomainGiven",- (\input -> Eithers.map (\t -> Paths.TermAttributeLambdaDomainGiven t) (DecodeCore.type_ cx input))),+ (\input -> Eithers.map (\t -> Paths.TermAttributeLinkLambdaDomainGiven t) (DecodeCore.type_ cx input))), ( Core.Name "lambdaParameter",- (\input -> Eithers.map (\t -> Paths.TermAttributeLambdaParameter t) (DecodeCore.name cx input))),+ (\input -> Eithers.map (\t -> Paths.TermAttributeLinkLambdaParameter t) (DecodeCore.name cx input))), ( Core.Name "letBindingTypeSchemeGiven",- (\input -> Eithers.map (\t -> Paths.TermAttributeLetBindingTypeSchemeGiven t) (ExtractCore.decodePair DecodeCore.name DecodeCore.typeScheme cx input))),+ (\input -> Eithers.map (\t -> Paths.TermAttributeLinkLetBindingTypeSchemeGiven t) (ExtractCore.decodePair DecodeCore.name DecodeCore.typeScheme cx input))),+ (Core.Name "literal", (\input -> Eithers.map (\t -> Paths.TermAttributeLinkLiteral t) (DecodeCore.literal cx input))), ( Core.Name "projectFieldName",- (\input -> Eithers.map (\t -> Paths.TermAttributeProjectFieldName t) (DecodeCore.name cx input))),+ (\input -> Eithers.map (\t -> Paths.TermAttributeLinkProjectFieldName t) (DecodeCore.name cx input))), ( Core.Name "projectTypeName",- (\input -> Eithers.map (\t -> Paths.TermAttributeProjectTypeName t) (DecodeCore.name cx input))),+ (\input -> Eithers.map (\t -> Paths.TermAttributeLinkProjectTypeName t) (DecodeCore.name cx input))), ( Core.Name "recordTypeName",- (\input -> Eithers.map (\t -> Paths.TermAttributeRecordTypeName t) (DecodeCore.name cx input))),+ (\input -> Eithers.map (\t -> Paths.TermAttributeLinkRecordTypeName t) (DecodeCore.name cx input))), ( Core.Name "typeApplicationType",- (\input -> Eithers.map (\t -> Paths.TermAttributeTypeApplicationType t) (DecodeCore.type_ cx input))),+ (\input -> Eithers.map (\t -> Paths.TermAttributeLinkTypeApplicationType t) (DecodeCore.type_ cx input))), ( Core.Name "typeLambdaParameter",- (\input -> Eithers.map (\t -> Paths.TermAttributeTypeLambdaParameter t) (DecodeCore.name cx input))),- (Core.Name "wrapTypeName", (\input -> Eithers.map (\t -> Paths.TermAttributeWrapTypeName t) (DecodeCore.name cx input)))]+ (\input -> Eithers.map (\t -> Paths.TermAttributeLinkTypeLambdaParameter t) (DecodeCore.name cx input))),+ (+ Core.Name "unwrapTypeName",+ (\input -> Eithers.map (\t -> Paths.TermAttributeLinkUnwrapTypeName t) (DecodeCore.name cx input))),+ (+ Core.Name "wrapTypeName",+ (\input -> Eithers.map (\t -> Paths.TermAttributeLinkWrapTypeName t) (DecodeCore.name cx input)))] in (Optionals.match (Maps.lookup fname variantMap) (Left (Errors.DecodingError (Strings.concat [ "no such field ", (Core.unName fname), " in union"]))) (\f -> f fterm)) _ -> Left (Errors.DecodingError "expected union")) (ExtractCore.stripWithDecodingError cx raw) --- | Decoder for hydra.paths.TypeAttribute-typeAttribute :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.TypeAttribute-typeAttribute cx raw =+-- | Decoder for hydra.paths.TermGraph+termGraph :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.TermGraph+termGraph cx raw = Eithers.either (\err -> Left err) (\stripped -> case stripped of+ Core.TermRecord v0 ->+ let fieldMap = ExtractCore.toFieldMap v0+ in (Eithers.bind (ExtractCore.requireField "roots" (ExtractCore.decodeMap DecodeCore.name termNode) fieldMap cx) (\field_roots -> Right (Paths.TermGraph {+ Paths.termGraphRoots = field_roots})))+ _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.TermGraph")) (ExtractCore.stripWithDecodingError cx raw)++-- | Decoder for hydra.paths.TermLink+termLink :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.TermLink+termLink cx raw =+ Eithers.either (\err -> Left err) (\stripped -> case stripped of Core.TermInject v0 -> let field = Core.injectionField v0 fname = Core.fieldName field fterm = Core.fieldTerm field variantMap = Maps.fromList [+ (Core.Name "attribute", (\input -> Eithers.map (\t -> Paths.TermLinkAttribute t) (termAttributeLink cx input))),+ (Core.Name "reference", (\input -> Eithers.map (\t -> Paths.TermLinkReference t) (termReferenceLink cx input))),+ (Core.Name "subterm", (\input -> Eithers.map (\t -> Paths.TermLinkSubterm t) (subtermLink cx input)))]+ in (Optionals.match (Maps.lookup fname variantMap) (Left (Errors.DecodingError (Strings.concat [+ "no such field ",+ (Core.unName fname),+ " in union"]))) (\f -> f fterm))+ _ -> Left (Errors.DecodingError "expected union")) (ExtractCore.stripWithDecodingError cx raw)++-- | Decoder for hydra.paths.TermNode+termNode :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.TermNode+termNode cx raw =+ Eithers.either (\err -> Left err) (\stripped -> case stripped of+ Core.TermRecord v0 ->+ let fieldMap = ExtractCore.toFieldMap v0+ in (Eithers.bind (ExtractCore.requireField "term" DecodeCore.term fieldMap cx) (\field_term -> Eithers.bind (ExtractCore.requireField "type" DecodeCore.type_ fieldMap cx) (\field_type -> Eithers.bind (ExtractCore.requireField "links" (ExtractCore.decodeList termLink) fieldMap cx) (\field_links -> Right (Paths.TermNode {+ Paths.termNodeTerm = field_term,+ Paths.termNodeType = field_type,+ Paths.termNodeLinks = field_links})))))+ _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.TermNode")) (ExtractCore.stripWithDecodingError cx raw)++-- | Decoder for hydra.paths.TermNodeId+termNodeId :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.TermNodeId+termNodeId cx raw =+ Eithers.either (\err -> Left err) (\stripped -> case stripped of+ Core.TermRecord v0 ->+ let fieldMap = ExtractCore.toFieldMap v0+ in (Eithers.bind (ExtractCore.requireField "root" DecodeCore.name fieldMap cx) (\field_root -> Eithers.bind (ExtractCore.requireField "path" subtermPath fieldMap cx) (\field_path -> Right (Paths.TermNodeId {+ Paths.termNodeIdRoot = field_root,+ Paths.termNodeIdPath = field_path}))))+ _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.TermNodeId")) (ExtractCore.stripWithDecodingError cx raw)++-- | Decoder for hydra.paths.TermReference+termReference :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.TermReference+termReference cx raw =+ Eithers.either (\err -> Left err) (\stripped -> case stripped of+ Core.TermInject v0 ->+ let field = Core.injectionField v0+ fname = Core.fieldName field+ fterm = Core.fieldTerm field+ variantMap =+ Maps.fromList [+ (Core.Name "lambda", (\input -> Eithers.map (\t -> Paths.TermReferenceLambda t) (lambdaVariableReference cx input))),+ (Core.Name "let", (\input -> Eithers.map (\t -> Paths.TermReferenceLet t) (letVariableReference cx input))),+ (Core.Name "primitive", (\input -> Eithers.map (\t -> Paths.TermReferencePrimitive t) (primitiveReference cx input)))]+ in (Optionals.match (Maps.lookup fname variantMap) (Left (Errors.DecodingError (Strings.concat [+ "no such field ",+ (Core.unName fname),+ " in union"]))) (\f -> f fterm))+ _ -> Left (Errors.DecodingError "expected union")) (ExtractCore.stripWithDecodingError cx raw)++-- | Decoder for hydra.paths.TermReferenceLink+termReferenceLink :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.TermReferenceLink+termReferenceLink cx raw =+ Eithers.either (\err -> Left err) (\stripped -> case stripped of+ Core.TermRecord v0 ->+ let fieldMap = ExtractCore.toFieldMap v0+ in (Eithers.bind (ExtractCore.requireField "step" subtermStep fieldMap cx) (\field_step -> Eithers.bind (ExtractCore.requireField "target" termReference fieldMap cx) (\field_target -> Right (Paths.TermReferenceLink {+ Paths.termReferenceLinkStep = field_step,+ Paths.termReferenceLinkTarget = field_target}))))+ _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.TermReferenceLink")) (ExtractCore.stripWithDecodingError cx raw)++-- | Decoder for hydra.paths.TypeAttributeLink+typeAttributeLink :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.TypeAttributeLink+typeAttributeLink cx raw =+ Eithers.either (\err -> Left err) (\stripped -> case stripped of+ Core.TermInject v0 ->+ let field = Core.injectionField v0+ fname = Core.fieldName field+ fterm = Core.fieldTerm field+ variantMap =+ Maps.fromList [ ( Core.Name "annotatedAnnotation",- (\input -> Eithers.map (\t -> Paths.TypeAttributeAnnotatedAnnotation t) (DecodeCore.term cx input))),+ (\input -> Eithers.map (\t -> Paths.TypeAttributeLinkAnnotatedAnnotation t) (DecodeCore.term cx input))), ( Core.Name "forallParameter",- (\input -> Eithers.map (\t -> Paths.TypeAttributeForallParameter t) (DecodeCore.name cx input)))]+ (\input -> Eithers.map (\t -> Paths.TypeAttributeLinkForallParameter t) (DecodeCore.name cx input))),+ (Core.Name "literal", (\input -> Eithers.map (\t -> Paths.TypeAttributeLinkLiteral t) (DecodeCore.literalType cx input)))] in (Optionals.match (Maps.lookup fname variantMap) (Left (Errors.DecodingError (Strings.concat [ "no such field ", (Core.unName fname), " in union"]))) (\f -> f fterm)) _ -> Left (Errors.DecodingError "expected union")) (ExtractCore.stripWithDecodingError cx raw)++-- | Decoder for hydra.paths.TypeGraph+typeGraph :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.TypeGraph+typeGraph cx raw =+ Eithers.either (\err -> Left err) (\stripped -> case stripped of+ Core.TermRecord v0 ->+ let fieldMap = ExtractCore.toFieldMap v0+ in (Eithers.bind (ExtractCore.requireField "roots" (ExtractCore.decodeMap DecodeCore.name typeNode) fieldMap cx) (\field_roots -> Right (Paths.TypeGraph {+ Paths.typeGraphRoots = field_roots})))+ _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.TypeGraph")) (ExtractCore.stripWithDecodingError cx raw)++-- | Decoder for hydra.paths.TypeLink+typeLink :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.TypeLink+typeLink cx raw =+ Eithers.either (\err -> Left err) (\stripped -> case stripped of+ Core.TermInject v0 ->+ let field = Core.injectionField v0+ fname = Core.fieldName field+ fterm = Core.fieldTerm field+ variantMap =+ Maps.fromList [+ (Core.Name "attribute", (\input -> Eithers.map (\t -> Paths.TypeLinkAttribute t) (typeAttributeLink cx input))),+ (Core.Name "reference", (\input -> Eithers.map (\t -> Paths.TypeLinkReference t) (typeReferenceLink cx input))),+ (Core.Name "subtype", (\input -> Eithers.map (\t -> Paths.TypeLinkSubtype t) (subtypeLink cx input)))]+ in (Optionals.match (Maps.lookup fname variantMap) (Left (Errors.DecodingError (Strings.concat [+ "no such field ",+ (Core.unName fname),+ " in union"]))) (\f -> f fterm))+ _ -> Left (Errors.DecodingError "expected union")) (ExtractCore.stripWithDecodingError cx raw)++-- | Decoder for hydra.paths.TypeNode+typeNode :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.TypeNode+typeNode cx raw =+ Eithers.either (\err -> Left err) (\stripped -> case stripped of+ Core.TermRecord v0 ->+ let fieldMap = ExtractCore.toFieldMap v0+ in (Eithers.bind (ExtractCore.requireField "type" DecodeCore.type_ fieldMap cx) (\field_type -> Eithers.bind (ExtractCore.requireField "links" (ExtractCore.decodeList typeLink) fieldMap cx) (\field_links -> Right (Paths.TypeNode {+ Paths.typeNodeType = field_type,+ Paths.typeNodeLinks = field_links}))))+ _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.TypeNode")) (ExtractCore.stripWithDecodingError cx raw)++-- | Decoder for hydra.paths.TypeNodeId+typeNodeId :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.TypeNodeId+typeNodeId cx raw =+ Eithers.either (\err -> Left err) (\stripped -> case stripped of+ Core.TermRecord v0 ->+ let fieldMap = ExtractCore.toFieldMap v0+ in (Eithers.bind (ExtractCore.requireField "root" DecodeCore.name fieldMap cx) (\field_root -> Eithers.bind (ExtractCore.requireField "path" subtypePath fieldMap cx) (\field_path -> Right (Paths.TypeNodeId {+ Paths.typeNodeIdRoot = field_root,+ Paths.typeNodeIdPath = field_path}))))+ _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.TypeNodeId")) (ExtractCore.stripWithDecodingError cx raw)++-- | Decoder for hydra.paths.TypeReference+typeReference :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.TypeReference+typeReference cx raw =+ Eithers.either (\err -> Left err) (\stripped -> case stripped of+ Core.TermInject v0 ->+ let field = Core.injectionField v0+ fname = Core.fieldName field+ fterm = Core.fieldTerm field+ variantMap =+ Maps.fromList [+ (Core.Name "nominal", (\input -> Eithers.map (\t -> Paths.TypeReferenceNominal t) (nominalTypeReference cx input))),+ (Core.Name "variable", (\input -> Eithers.map (\t -> Paths.TypeReferenceVariable t) (typeVariableReference cx input)))]+ in (Optionals.match (Maps.lookup fname variantMap) (Left (Errors.DecodingError (Strings.concat [+ "no such field ",+ (Core.unName fname),+ " in union"]))) (\f -> f fterm))+ _ -> Left (Errors.DecodingError "expected union")) (ExtractCore.stripWithDecodingError cx raw)++-- | Decoder for hydra.paths.TypeReferenceLink+typeReferenceLink :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.TypeReferenceLink+typeReferenceLink cx raw =+ Eithers.either (\err -> Left err) (\stripped -> case stripped of+ Core.TermRecord v0 ->+ let fieldMap = ExtractCore.toFieldMap v0+ in (Eithers.bind (ExtractCore.requireField "step" subtypeStep fieldMap cx) (\field_step -> Eithers.bind (ExtractCore.requireField "target" typeReference fieldMap cx) (\field_target -> Right (Paths.TypeReferenceLink {+ Paths.typeReferenceLinkStep = field_step,+ Paths.typeReferenceLinkTarget = field_target}))))+ _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.TypeReferenceLink")) (ExtractCore.stripWithDecodingError cx raw)++-- | Decoder for hydra.paths.TypeVariableReference+typeVariableReference :: Graph.Graph -> Core.Term -> Either Errors.DecodingError Paths.TypeVariableReference+typeVariableReference cx raw =+ Eithers.either (\err -> Left err) (\stripped -> case stripped of+ Core.TermRecord v0 ->+ let fieldMap = ExtractCore.toFieldMap v0+ in (Eithers.bind (ExtractCore.requireField "variable" DecodeCore.name fieldMap cx) (\field_variable -> Eithers.bind (ExtractCore.requireField "boundByNode" typeNodeId fieldMap cx) (\field_boundByNode -> Right (Paths.TypeVariableReference {+ Paths.typeVariableReferenceVariable = field_variable,+ Paths.typeVariableReferenceBoundByNode = field_boundByNode}))))+ _ -> Left (Errors.DecodingError "expected a record of type hydra.paths.TypeVariableReference")) (ExtractCore.stripWithDecodingError cx raw)
src/main/haskell/Hydra/Decode/Util.hs view
@@ -34,7 +34,10 @@ (Core.Name "camel", (\input -> Eithers.map (\t -> Util.CaseConventionCamel) (ExtractCore.decodeUnit cx input))), (Core.Name "pascal", (\input -> Eithers.map (\t -> Util.CaseConventionPascal) (ExtractCore.decodeUnit cx input))), (Core.Name "lowerSnake", (\input -> Eithers.map (\t -> Util.CaseConventionLowerSnake) (ExtractCore.decodeUnit cx input))),- (Core.Name "upperSnake", (\input -> Eithers.map (\t -> Util.CaseConventionUpperSnake) (ExtractCore.decodeUnit cx input)))]+ (Core.Name "upperSnake", (\input -> Eithers.map (\t -> Util.CaseConventionUpperSnake) (ExtractCore.decodeUnit cx input))),+ (+ Core.Name "upperDashed",+ (\input -> Eithers.map (\t -> Util.CaseConventionUpperDashed) (ExtractCore.decodeUnit cx input)))] in (Optionals.match (Maps.lookup fname variantMap) (Left (Errors.DecodingError (Strings.concat [ "no such field ", (Core.unName fname),
src/main/haskell/Hydra/Decoding.hs view
@@ -1530,7 +1530,8 @@ (Packaging.unModuleName (Packaging.moduleName mod))])), Packaging.entityMetadataComments = [], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.moduleDependencies = (Lists.map (\ns -> Packaging.ModuleDependency { Packaging.moduleDependencyModule = ns, Packaging.moduleDependencyPackage = Nothing}) (Lists.concat2 [@@ -1713,7 +1714,9 @@ case typ of Core.TypeAnnotated v0 -> decodeType (Core.annotatedTypeBody v0) Core.TypeApplication v0 -> Core.TermApplication (Core.Application {- Core.applicationFunction = (decodeType (Core.applicationTypeFunction v0)),+ Core.applicationFunction = (Core.TermTypeApplication (Core.TypeApplicationTerm {+ Core.typeApplicationTermBody = (decodeType (Core.applicationTypeFunction v0)),+ Core.typeApplicationTermType = (decoderFullResultType (Core.applicationTypeArgument v0))})), Core.applicationArgument = (decodeType (Core.applicationTypeArgument v0))}) Core.TypeEither v0 -> decodeEitherType v0 Core.TypeForall v0 -> decodeForallType v0@@ -1749,7 +1752,9 @@ case typ of Core.TypeAnnotated v0 -> decodeTypeNamed ename (Core.annotatedTypeBody v0) rtype Core.TypeApplication v0 -> Core.TermApplication (Core.Application {- Core.applicationFunction = (decodeType (Core.applicationTypeFunction v0)),+ Core.applicationFunction = (Core.TermTypeApplication (Core.TypeApplicationTerm {+ Core.typeApplicationTermBody = (decodeType (Core.applicationTypeFunction v0)),+ Core.typeApplicationTermType = (decoderFullResultType (Core.applicationTypeArgument v0))})), Core.applicationArgument = (decodeType (Core.applicationTypeArgument v0))}) Core.TypeEither v0 -> decodeEitherType v0 Core.TypeForall v0 -> Core.TermLambda (Core.Lambda {
src/main/haskell/Hydra/Dsl/Error/Packaging.hs view
@@ -827,6 +827,24 @@ Core.fieldName = (Core.Name "invalidPackageName"), Core.fieldTerm = (Typed.unTypedTerm x)}})) +-- | DSL injection for the moduleInMultiplePackages variant of hydra.error.packaging.InvalidPackageError+invalidPackageErrorModuleInMultiplePackages :: Typed.TypedTerm ErrorPackaging.ModuleInMultiplePackagesError -> Typed.TypedTerm ErrorPackaging.InvalidPackageError+invalidPackageErrorModuleInMultiplePackages x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.error.packaging.InvalidPackageError"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "moduleInMultiplePackages"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the nestedModuleName variant of hydra.error.packaging.InvalidPackageError+invalidPackageErrorNestedModuleName :: Typed.TypedTerm ErrorPackaging.NestedModuleNameError -> Typed.TypedTerm ErrorPackaging.InvalidPackageError+invalidPackageErrorNestedModuleName x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.error.packaging.InvalidPackageError"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "nestedModuleName"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))+ -- | DSL injection for the undeclaredDependency variant of hydra.error.packaging.InvalidPackageError invalidPackageErrorUndeclaredDependency :: Typed.TypedTerm ErrorPackaging.UndeclaredDependencyError -> Typed.TypedTerm ErrorPackaging.InvalidPackageError invalidPackageErrorUndeclaredDependency x =@@ -939,6 +957,195 @@ Core.Field { Core.fieldName = (Core.Name "name"), Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.error.packaging.ModuleInMultiplePackagesError+moduleInMultiplePackagesError :: Typed.TypedTerm Packaging.ModuleName -> Typed.TypedTerm Packaging.PackageName -> Typed.TypedTerm Packaging.PackageName -> Typed.TypedTerm ErrorPackaging.ModuleInMultiplePackagesError+moduleInMultiplePackagesError moduleName firstPackage secondPackage =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.error.packaging.ModuleInMultiplePackagesError"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "moduleName"),+ Core.fieldTerm = (Typed.unTypedTerm moduleName)},+ Core.Field {+ Core.fieldName = (Core.Name "firstPackage"),+ Core.fieldTerm = (Typed.unTypedTerm firstPackage)},+ Core.Field {+ Core.fieldName = (Core.Name "secondPackage"),+ Core.fieldTerm = (Typed.unTypedTerm secondPackage)}]}))++-- | DSL accessor for the firstPackage field of hydra.error.packaging.ModuleInMultiplePackagesError+moduleInMultiplePackagesErrorFirstPackage :: Typed.TypedTerm ErrorPackaging.ModuleInMultiplePackagesError -> Typed.TypedTerm Packaging.PackageName+moduleInMultiplePackagesErrorFirstPackage x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.error.packaging.ModuleInMultiplePackagesError"),+ Core.projectionFieldName = (Core.Name "firstPackage")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.error.packaging.ModuleInMultiplePackagesError+moduleInMultiplePackagesErrorModuleInMultiplePackagesError :: Typed.TypedName ErrorPackaging.ModuleInMultiplePackagesError+moduleInMultiplePackagesErrorModuleInMultiplePackagesError =+ Typed.TypedName (Core.Name "hydra.error.packaging.ModuleInMultiplePackagesError")++-- | DSL accessor for the moduleName field of hydra.error.packaging.ModuleInMultiplePackagesError+moduleInMultiplePackagesErrorModuleName :: Typed.TypedTerm ErrorPackaging.ModuleInMultiplePackagesError -> Typed.TypedTerm Packaging.ModuleName+moduleInMultiplePackagesErrorModuleName x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.error.packaging.ModuleInMultiplePackagesError"),+ Core.projectionFieldName = (Core.Name "moduleName")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the secondPackage field of hydra.error.packaging.ModuleInMultiplePackagesError+moduleInMultiplePackagesErrorSecondPackage :: Typed.TypedTerm ErrorPackaging.ModuleInMultiplePackagesError -> Typed.TypedTerm Packaging.PackageName+moduleInMultiplePackagesErrorSecondPackage x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.error.packaging.ModuleInMultiplePackagesError"),+ Core.projectionFieldName = (Core.Name "secondPackage")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the firstPackage field of hydra.error.packaging.ModuleInMultiplePackagesError+moduleInMultiplePackagesErrorWithFirstPackage :: Typed.TypedTerm ErrorPackaging.ModuleInMultiplePackagesError -> Typed.TypedTerm Packaging.PackageName -> Typed.TypedTerm ErrorPackaging.ModuleInMultiplePackagesError+moduleInMultiplePackagesErrorWithFirstPackage original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.error.packaging.ModuleInMultiplePackagesError"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "moduleName"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.error.packaging.ModuleInMultiplePackagesError"),+ Core.projectionFieldName = (Core.Name "moduleName")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "firstPackage"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)},+ Core.Field {+ Core.fieldName = (Core.Name "secondPackage"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.error.packaging.ModuleInMultiplePackagesError"),+ Core.projectionFieldName = (Core.Name "secondPackage")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the moduleName field of hydra.error.packaging.ModuleInMultiplePackagesError+moduleInMultiplePackagesErrorWithModuleName :: Typed.TypedTerm ErrorPackaging.ModuleInMultiplePackagesError -> Typed.TypedTerm Packaging.ModuleName -> Typed.TypedTerm ErrorPackaging.ModuleInMultiplePackagesError+moduleInMultiplePackagesErrorWithModuleName original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.error.packaging.ModuleInMultiplePackagesError"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "moduleName"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)},+ Core.Field {+ Core.fieldName = (Core.Name "firstPackage"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.error.packaging.ModuleInMultiplePackagesError"),+ Core.projectionFieldName = (Core.Name "firstPackage")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "secondPackage"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.error.packaging.ModuleInMultiplePackagesError"),+ Core.projectionFieldName = (Core.Name "secondPackage")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the secondPackage field of hydra.error.packaging.ModuleInMultiplePackagesError+moduleInMultiplePackagesErrorWithSecondPackage :: Typed.TypedTerm ErrorPackaging.ModuleInMultiplePackagesError -> Typed.TypedTerm Packaging.PackageName -> Typed.TypedTerm ErrorPackaging.ModuleInMultiplePackagesError+moduleInMultiplePackagesErrorWithSecondPackage original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.error.packaging.ModuleInMultiplePackagesError"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "moduleName"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.error.packaging.ModuleInMultiplePackagesError"),+ Core.projectionFieldName = (Core.Name "moduleName")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "firstPackage"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.error.packaging.ModuleInMultiplePackagesError"),+ Core.projectionFieldName = (Core.Name "firstPackage")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "secondPackage"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.error.packaging.NestedModuleNameError+nestedModuleNameError :: Typed.TypedTerm Packaging.ModuleName -> Typed.TypedTerm Packaging.ModuleName -> Typed.TypedTerm ErrorPackaging.NestedModuleNameError+nestedModuleNameError outer inner =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.error.packaging.NestedModuleNameError"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "outer"),+ Core.fieldTerm = (Typed.unTypedTerm outer)},+ Core.Field {+ Core.fieldName = (Core.Name "inner"),+ Core.fieldTerm = (Typed.unTypedTerm inner)}]}))++-- | DSL accessor for the inner field of hydra.error.packaging.NestedModuleNameError+nestedModuleNameErrorInner :: Typed.TypedTerm ErrorPackaging.NestedModuleNameError -> Typed.TypedTerm Packaging.ModuleName+nestedModuleNameErrorInner x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.error.packaging.NestedModuleNameError"),+ Core.projectionFieldName = (Core.Name "inner")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.error.packaging.NestedModuleNameError+nestedModuleNameErrorNestedModuleNameError :: Typed.TypedName ErrorPackaging.NestedModuleNameError+nestedModuleNameErrorNestedModuleNameError = Typed.TypedName (Core.Name "hydra.error.packaging.NestedModuleNameError")++-- | DSL accessor for the outer field of hydra.error.packaging.NestedModuleNameError+nestedModuleNameErrorOuter :: Typed.TypedTerm ErrorPackaging.NestedModuleNameError -> Typed.TypedTerm Packaging.ModuleName+nestedModuleNameErrorOuter x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.error.packaging.NestedModuleNameError"),+ Core.projectionFieldName = (Core.Name "outer")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the inner field of hydra.error.packaging.NestedModuleNameError+nestedModuleNameErrorWithInner :: Typed.TypedTerm ErrorPackaging.NestedModuleNameError -> Typed.TypedTerm Packaging.ModuleName -> Typed.TypedTerm ErrorPackaging.NestedModuleNameError+nestedModuleNameErrorWithInner original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.error.packaging.NestedModuleNameError"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "outer"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.error.packaging.NestedModuleNameError"),+ Core.projectionFieldName = (Core.Name "outer")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "inner"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the outer field of hydra.error.packaging.NestedModuleNameError+nestedModuleNameErrorWithOuter :: Typed.TypedTerm ErrorPackaging.NestedModuleNameError -> Typed.TypedTerm Packaging.ModuleName -> Typed.TypedTerm ErrorPackaging.NestedModuleNameError+nestedModuleNameErrorWithOuter original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.error.packaging.NestedModuleNameError"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "outer"),+ 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.error.packaging.NestedModuleNameError"),+ Core.projectionFieldName = (Core.Name "inner")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))}]})) -- | DSL constructor for hydra.error.packaging.UndeclaredDependencyError undeclaredDependencyError :: Typed.TypedTerm Packaging.ModuleName -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Packaging.ModuleName -> Typed.TypedTerm ErrorPackaging.UndeclaredDependencyError
src/main/haskell/Hydra/Dsl/Names.hs view
@@ -92,6 +92,15 @@ Core.applicationArgument = (Typed.unTypedTerm arg0)})), Core.applicationArgument = (Typed.unTypedTerm arg1)})) +-- | DSL reference to hydra.names.composeProvisionName+composeProvisionName :: Typed.TypedTerm Core.Name -> Typed.TypedTerm String -> Typed.TypedTerm Core.Name+composeProvisionName arg0 arg1 =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.names.composeProvisionName")),+ Core.applicationArgument = (Typed.unTypedTerm arg0)})),+ Core.applicationArgument = (Typed.unTypedTerm arg1)}))+ -- | DSL reference to hydra.names.derivedBindingName derivedBindingName :: Typed.TypedTerm [String] -> Typed.TypedTerm Bool -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Core.Name derivedBindingName arg0 arg1 arg2 =@@ -182,6 +191,13 @@ Core.applicationArgument = (Typed.unTypedTerm arg1)})), Core.applicationArgument = (Typed.unTypedTerm arg2)})), Core.applicationArgument = (Typed.unTypedTerm arg3)}))++-- | DSL reference to hydra.names.nameToUpperDashed+nameToUpperDashed :: Typed.TypedTerm Core.Name -> Typed.TypedTerm String+nameToUpperDashed arg0 =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.names.nameToUpperDashed")),+ Core.applicationArgument = (Typed.unTypedTerm arg0)})) -- | DSL reference to hydra.names.normalTypeVariable normalTypeVariable :: Typed.TypedTerm Int -> Typed.TypedTerm Core.Name
src/main/haskell/Hydra/Dsl/Packaging.hs view
@@ -119,8 +119,8 @@ Core.fieldTerm = Core.TermUnit}})) -- | DSL constructor for hydra.packaging.EntityMetadata-entityMetadata :: Typed.TypedTerm (Maybe String) -> Typed.TypedTerm [String] -> Typed.TypedTerm [Packaging.EntityReference] -> Typed.TypedTerm (Maybe Packaging.LifecycleInfo) -> Typed.TypedTerm Packaging.EntityMetadata-entityMetadata description comments seeAlso lifecycle =+entityMetadata :: Typed.TypedTerm (Maybe String) -> Typed.TypedTerm [String] -> Typed.TypedTerm [Packaging.EntityReference] -> Typed.TypedTerm (Maybe Packaging.LifecycleInfo) -> Typed.TypedTerm [Packaging.Provision] -> Typed.TypedTerm Packaging.EntityMetadata+entityMetadata description comments seeAlso lifecycle provisions = Typed.TypedTerm (Core.TermRecord (Core.Record { Core.recordTypeName = (Core.Name "hydra.packaging.EntityMetadata"), Core.recordFields = [@@ -135,7 +135,10 @@ Core.fieldTerm = (Typed.unTypedTerm seeAlso)}, Core.Field { Core.fieldName = (Core.Name "lifecycle"),- Core.fieldTerm = (Typed.unTypedTerm lifecycle)}]}))+ Core.fieldTerm = (Typed.unTypedTerm lifecycle)},+ Core.Field {+ Core.fieldName = (Core.Name "provisions"),+ Core.fieldTerm = (Typed.unTypedTerm provisions)}]})) -- | DSL accessor for the comments field of hydra.packaging.EntityMetadata entityMetadataComments :: Typed.TypedTerm Packaging.EntityMetadata -> Typed.TypedTerm [String]@@ -168,6 +171,15 @@ Core.projectionFieldName = (Core.Name "lifecycle")})), Core.applicationArgument = (Typed.unTypedTerm x)})) +-- | DSL accessor for the provisions field of hydra.packaging.EntityMetadata+entityMetadataProvisions :: Typed.TypedTerm Packaging.EntityMetadata -> Typed.TypedTerm [Packaging.Provision]+entityMetadataProvisions x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.packaging.EntityMetadata"),+ Core.projectionFieldName = (Core.Name "provisions")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))+ -- | DSL accessor for the seeAlso field of hydra.packaging.EntityMetadata entityMetadataSeeAlso :: Typed.TypedTerm Packaging.EntityMetadata -> Typed.TypedTerm [Packaging.EntityReference] entityMetadataSeeAlso x =@@ -206,6 +218,13 @@ Core.applicationFunction = (Core.TermProject (Core.Projection { Core.projectionTypeName = (Core.Name "hydra.packaging.EntityMetadata"), Core.projectionFieldName = (Core.Name "lifecycle")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "provisions"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.packaging.EntityMetadata"),+ Core.projectionFieldName = (Core.Name "provisions")})), Core.applicationArgument = (Typed.unTypedTerm original)}))}]})) -- | DSL updater for the description field of hydra.packaging.EntityMetadata@@ -237,6 +256,13 @@ Core.applicationFunction = (Core.TermProject (Core.Projection { Core.projectionTypeName = (Core.Name "hydra.packaging.EntityMetadata"), Core.projectionFieldName = (Core.Name "lifecycle")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "provisions"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.packaging.EntityMetadata"),+ Core.projectionFieldName = (Core.Name "provisions")})), Core.applicationArgument = (Typed.unTypedTerm original)}))}]})) -- | DSL updater for the lifecycle field of hydra.packaging.EntityMetadata@@ -268,6 +294,51 @@ Core.applicationArgument = (Typed.unTypedTerm original)}))}, Core.Field { Core.fieldName = (Core.Name "lifecycle"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)},+ Core.Field {+ Core.fieldName = (Core.Name "provisions"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.packaging.EntityMetadata"),+ Core.projectionFieldName = (Core.Name "provisions")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the provisions field of hydra.packaging.EntityMetadata+entityMetadataWithProvisions :: Typed.TypedTerm Packaging.EntityMetadata -> Typed.TypedTerm [Packaging.Provision] -> Typed.TypedTerm Packaging.EntityMetadata+entityMetadataWithProvisions original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.packaging.EntityMetadata"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "description"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.packaging.EntityMetadata"),+ Core.projectionFieldName = (Core.Name "description")})),+ 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.packaging.EntityMetadata"),+ Core.projectionFieldName = (Core.Name "comments")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "seeAlso"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.packaging.EntityMetadata"),+ Core.projectionFieldName = (Core.Name "seeAlso")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "lifecycle"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.packaging.EntityMetadata"),+ Core.projectionFieldName = (Core.Name "lifecycle")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "provisions"), Core.fieldTerm = (Typed.unTypedTerm newVal)}]})) -- | DSL updater for the seeAlso field of hydra.packaging.EntityMetadata@@ -299,6 +370,13 @@ Core.applicationFunction = (Core.TermProject (Core.Projection { Core.projectionTypeName = (Core.Name "hydra.packaging.EntityMetadata"), Core.projectionFieldName = (Core.Name "lifecycle")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "provisions"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.packaging.EntityMetadata"),+ Core.projectionFieldName = (Core.Name "provisions")})), Core.applicationArgument = (Typed.unTypedTerm original)}))}]})) -- | DSL injection for the definition variant of hydra.packaging.EntityReference@@ -1347,6 +1425,147 @@ Core.projectionTypeName = (Core.Name "hydra.packaging.PrimitiveDefinition"), Core.projectionFieldName = (Core.Name "defaultImplementation")})), Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.packaging.Provision+provision :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Packaging.ProvisionKind -> Typed.TypedTerm String -> Typed.TypedTerm Packaging.Provision+provision name kind statement =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.packaging.Provision"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "name"),+ Core.fieldTerm = (Typed.unTypedTerm name)},+ Core.Field {+ Core.fieldName = (Core.Name "kind"),+ Core.fieldTerm = (Typed.unTypedTerm kind)},+ Core.Field {+ Core.fieldName = (Core.Name "statement"),+ Core.fieldTerm = (Typed.unTypedTerm statement)}]}))++-- | DSL accessor for the kind field of hydra.packaging.Provision+provisionKind :: Typed.TypedTerm Packaging.Provision -> Typed.TypedTerm Packaging.ProvisionKind+provisionKind x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.packaging.Provision"),+ Core.projectionFieldName = (Core.Name "kind")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.packaging.ProvisionKind+provisionKindProvisionKind :: Typed.TypedName Packaging.ProvisionKind+provisionKindProvisionKind = Typed.TypedName (Core.Name "hydra.packaging.ProvisionKind")++-- | DSL injection for the recommendation variant of hydra.packaging.ProvisionKind+provisionKindRecommendation :: Typed.TypedTerm Packaging.ProvisionKind+provisionKindRecommendation =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.packaging.ProvisionKind"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "recommendation"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the requirement variant of hydra.packaging.ProvisionKind+provisionKindRequirement :: Typed.TypedTerm Packaging.ProvisionKind+provisionKindRequirement =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.packaging.ProvisionKind"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "requirement"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL accessor for the name field of hydra.packaging.Provision+provisionName :: Typed.TypedTerm Packaging.Provision -> Typed.TypedTerm Core.Name+provisionName x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.packaging.Provision"),+ Core.projectionFieldName = (Core.Name "name")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.packaging.Provision+provisionProvision :: Typed.TypedName Packaging.Provision+provisionProvision = Typed.TypedName (Core.Name "hydra.packaging.Provision")++-- | DSL accessor for the statement field of hydra.packaging.Provision+provisionStatement :: Typed.TypedTerm Packaging.Provision -> Typed.TypedTerm String+provisionStatement x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.packaging.Provision"),+ Core.projectionFieldName = (Core.Name "statement")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the kind field of hydra.packaging.Provision+provisionWithKind :: Typed.TypedTerm Packaging.Provision -> Typed.TypedTerm Packaging.ProvisionKind -> Typed.TypedTerm Packaging.Provision+provisionWithKind original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.packaging.Provision"),+ 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.packaging.Provision"),+ Core.projectionFieldName = (Core.Name "name")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "kind"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)},+ Core.Field {+ Core.fieldName = (Core.Name "statement"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.packaging.Provision"),+ Core.projectionFieldName = (Core.Name "statement")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the name field of hydra.packaging.Provision+provisionWithName :: Typed.TypedTerm Packaging.Provision -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Packaging.Provision+provisionWithName original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.packaging.Provision"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "name"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)},+ Core.Field {+ Core.fieldName = (Core.Name "kind"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.packaging.Provision"),+ Core.projectionFieldName = (Core.Name "kind")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "statement"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.packaging.Provision"),+ Core.projectionFieldName = (Core.Name "statement")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the statement field of hydra.packaging.Provision+provisionWithStatement :: Typed.TypedTerm Packaging.Provision -> Typed.TypedTerm String -> Typed.TypedTerm Packaging.Provision+provisionWithStatement original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.packaging.Provision"),+ 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.packaging.Provision"),+ Core.projectionFieldName = (Core.Name "name")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "kind"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.packaging.Provision"),+ Core.projectionFieldName = (Core.Name "kind")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "statement"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)}]})) -- | DSL constructor for hydra.packaging.TermDefinition termDefinition :: Typed.TypedTerm Core.Name -> Typed.TypedTerm (Maybe Packaging.EntityMetadata) -> Typed.TypedTerm (Maybe Typing.TermSignature) -> Typed.TypedTerm Core.Term -> Typed.TypedTerm Packaging.TermDefinition
src/main/haskell/Hydra/Dsl/Paths.hs view
@@ -13,1269 +13,1750 @@ 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.paths.SubtermAttribute-subtermAttribute :: Typed.TypedTerm Paths.SubtermPath -> Typed.TypedTerm Paths.TermAttribute -> Typed.TypedTerm Paths.SubtermAttribute-subtermAttribute path target =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtermAttribute"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (Typed.unTypedTerm path)},- Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (Typed.unTypedTerm target)}]}))---- | DSL accessor for the path field of hydra.paths.SubtermAttribute-subtermAttributePath :: Typed.TypedTerm Paths.SubtermAttribute -> Typed.TypedTerm Paths.SubtermPath-subtermAttributePath x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtermAttribute"),- Core.projectionFieldName = (Core.Name "path")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.paths.SubtermAttribute-subtermAttributeSubtermAttribute :: Typed.TypedName Paths.SubtermAttribute-subtermAttributeSubtermAttribute = Typed.TypedName (Core.Name "hydra.paths.SubtermAttribute")---- | DSL accessor for the target field of hydra.paths.SubtermAttribute-subtermAttributeTarget :: Typed.TypedTerm Paths.SubtermAttribute -> Typed.TypedTerm Paths.TermAttribute-subtermAttributeTarget x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtermAttribute"),- Core.projectionFieldName = (Core.Name "target")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the path field of hydra.paths.SubtermAttribute-subtermAttributeWithPath :: Typed.TypedTerm Paths.SubtermAttribute -> Typed.TypedTerm Paths.SubtermPath -> Typed.TypedTerm Paths.SubtermAttribute-subtermAttributeWithPath original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtermAttribute"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtermAttribute"),- Core.projectionFieldName = (Core.Name "target")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the target field of hydra.paths.SubtermAttribute-subtermAttributeWithTarget :: Typed.TypedTerm Paths.SubtermAttribute -> Typed.TypedTerm Paths.TermAttribute -> Typed.TypedTerm Paths.SubtermAttribute-subtermAttributeWithTarget original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtermAttribute"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtermAttribute"),- Core.projectionFieldName = (Core.Name "path")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.paths.SubtermEdge-subtermEdge :: Typed.TypedTerm Paths.SubtermPath -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.SubtermEdge-subtermEdge path target =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtermEdge"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (Typed.unTypedTerm path)},- Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (Typed.unTypedTerm target)}]}))---- | DSL accessor for the path field of hydra.paths.SubtermEdge-subtermEdgePath :: Typed.TypedTerm Paths.SubtermEdge -> Typed.TypedTerm Paths.SubtermPath-subtermEdgePath x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtermEdge"),- Core.projectionFieldName = (Core.Name "path")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.paths.SubtermEdge-subtermEdgeSubtermEdge :: Typed.TypedName Paths.SubtermEdge-subtermEdgeSubtermEdge = Typed.TypedName (Core.Name "hydra.paths.SubtermEdge")---- | DSL accessor for the target field of hydra.paths.SubtermEdge-subtermEdgeTarget :: Typed.TypedTerm Paths.SubtermEdge -> Typed.TypedTerm Core.Name-subtermEdgeTarget x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtermEdge"),- Core.projectionFieldName = (Core.Name "target")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the path field of hydra.paths.SubtermEdge-subtermEdgeWithPath :: Typed.TypedTerm Paths.SubtermEdge -> Typed.TypedTerm Paths.SubtermPath -> Typed.TypedTerm Paths.SubtermEdge-subtermEdgeWithPath original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtermEdge"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtermEdge"),- Core.projectionFieldName = (Core.Name "target")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the target field of hydra.paths.SubtermEdge-subtermEdgeWithTarget :: Typed.TypedTerm Paths.SubtermEdge -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.SubtermEdge-subtermEdgeWithTarget original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtermEdge"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtermEdge"),- Core.projectionFieldName = (Core.Name "path")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.paths.SubtermGraph-subtermGraph :: Typed.TypedTerm [Paths.SubtermNode] -> Typed.TypedTerm Paths.SubtermGraph-subtermGraph nodes =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtermGraph"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "nodes"),- Core.fieldTerm = (Typed.unTypedTerm nodes)}]}))---- | DSL accessor for the nodes field of hydra.paths.SubtermGraph-subtermGraphNodes :: Typed.TypedTerm Paths.SubtermGraph -> Typed.TypedTerm [Paths.SubtermNode]-subtermGraphNodes x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtermGraph"),- Core.projectionFieldName = (Core.Name "nodes")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.paths.SubtermGraph-subtermGraphSubtermGraph :: Typed.TypedName Paths.SubtermGraph-subtermGraphSubtermGraph = Typed.TypedName (Core.Name "hydra.paths.SubtermGraph")---- | DSL updater for the nodes field of hydra.paths.SubtermGraph-subtermGraphWithNodes :: Typed.TypedTerm Paths.SubtermGraph -> Typed.TypedTerm [Paths.SubtermNode] -> Typed.TypedTerm Paths.SubtermGraph-subtermGraphWithNodes original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtermGraph"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "nodes"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the attribute variant of hydra.paths.SubtermLink-subtermLinkAttribute :: Typed.TypedTerm Paths.SubtermAttribute -> Typed.TypedTerm Paths.SubtermLink-subtermLinkAttribute x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermLink"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "attribute"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the edge variant of hydra.paths.SubtermLink-subtermLinkEdge :: Typed.TypedTerm Paths.SubtermEdge -> Typed.TypedTerm Paths.SubtermLink-subtermLinkEdge x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermLink"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "edge"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the property variant of hydra.paths.SubtermLink-subtermLinkProperty :: Typed.TypedTerm Paths.SubtermProperty -> Typed.TypedTerm Paths.SubtermLink-subtermLinkProperty x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermLink"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "property"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.paths.SubtermLink-subtermLinkSubtermLink :: Typed.TypedName Paths.SubtermLink-subtermLinkSubtermLink = Typed.TypedName (Core.Name "hydra.paths.SubtermLink")---- | DSL constructor for hydra.paths.SubtermNode-subtermNode :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Core.TypeScheme -> Typed.TypedTerm [Paths.SubtermLink] -> Typed.TypedTerm Paths.SubtermNode-subtermNode name type_ links =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtermNode"),- 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 "links"),- Core.fieldTerm = (Typed.unTypedTerm links)}]}))---- | DSL accessor for the links field of hydra.paths.SubtermNode-subtermNodeLinks :: Typed.TypedTerm Paths.SubtermNode -> Typed.TypedTerm [Paths.SubtermLink]-subtermNodeLinks x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtermNode"),- Core.projectionFieldName = (Core.Name "links")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the name field of hydra.paths.SubtermNode-subtermNodeName :: Typed.TypedTerm Paths.SubtermNode -> Typed.TypedTerm Core.Name-subtermNodeName x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtermNode"),- Core.projectionFieldName = (Core.Name "name")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.paths.SubtermNode-subtermNodeSubtermNode :: Typed.TypedName Paths.SubtermNode-subtermNodeSubtermNode = Typed.TypedName (Core.Name "hydra.paths.SubtermNode")---- | DSL accessor for the type field of hydra.paths.SubtermNode-subtermNodeType :: Typed.TypedTerm Paths.SubtermNode -> Typed.TypedTerm Core.TypeScheme-subtermNodeType x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtermNode"),- Core.projectionFieldName = (Core.Name "type")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the links field of hydra.paths.SubtermNode-subtermNodeWithLinks :: Typed.TypedTerm Paths.SubtermNode -> Typed.TypedTerm [Paths.SubtermLink] -> Typed.TypedTerm Paths.SubtermNode-subtermNodeWithLinks original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtermNode"),- 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.paths.SubtermNode"),- 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.paths.SubtermNode"),- Core.projectionFieldName = (Core.Name "type")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "links"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the name field of hydra.paths.SubtermNode-subtermNodeWithName :: Typed.TypedTerm Paths.SubtermNode -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.SubtermNode-subtermNodeWithName original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtermNode"),- 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.paths.SubtermNode"),- Core.projectionFieldName = (Core.Name "type")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "links"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtermNode"),- Core.projectionFieldName = (Core.Name "links")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.paths.SubtermNode-subtermNodeWithType :: Typed.TypedTerm Paths.SubtermNode -> Typed.TypedTerm Core.TypeScheme -> Typed.TypedTerm Paths.SubtermNode-subtermNodeWithType original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtermNode"),- 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.paths.SubtermNode"),- 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 "links"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtermNode"),- Core.projectionFieldName = (Core.Name "links")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.paths.SubtermPath wrapper-subtermPath :: Typed.TypedTerm [Paths.SubtermStep] -> Typed.TypedTerm Paths.SubtermPath-subtermPath x =- Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {- Core.wrappedTermTypeName = (Core.Name "hydra.paths.SubtermPath"),- Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.paths.SubtermPath-subtermPathSubtermPath :: Typed.TypedName Paths.SubtermPath-subtermPathSubtermPath = Typed.TypedName (Core.Name "hydra.paths.SubtermPath")---- | DSL constructor for hydra.paths.SubtermProperty-subtermProperty :: Typed.TypedTerm Paths.SubtermPath -> Typed.TypedTerm Core.Term -> Typed.TypedTerm Paths.SubtermProperty-subtermProperty path target =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtermProperty"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (Typed.unTypedTerm path)},- Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (Typed.unTypedTerm target)}]}))---- | DSL accessor for the path field of hydra.paths.SubtermProperty-subtermPropertyPath :: Typed.TypedTerm Paths.SubtermProperty -> Typed.TypedTerm Paths.SubtermPath-subtermPropertyPath x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtermProperty"),- Core.projectionFieldName = (Core.Name "path")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.paths.SubtermProperty-subtermPropertySubtermProperty :: Typed.TypedName Paths.SubtermProperty-subtermPropertySubtermProperty = Typed.TypedName (Core.Name "hydra.paths.SubtermProperty")---- | DSL accessor for the target field of hydra.paths.SubtermProperty-subtermPropertyTarget :: Typed.TypedTerm Paths.SubtermProperty -> Typed.TypedTerm Core.Term-subtermPropertyTarget x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtermProperty"),- Core.projectionFieldName = (Core.Name "target")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the path field of hydra.paths.SubtermProperty-subtermPropertyWithPath :: Typed.TypedTerm Paths.SubtermProperty -> Typed.TypedTerm Paths.SubtermPath -> Typed.TypedTerm Paths.SubtermProperty-subtermPropertyWithPath original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtermProperty"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtermProperty"),- Core.projectionFieldName = (Core.Name "target")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the target field of hydra.paths.SubtermProperty-subtermPropertyWithTarget :: Typed.TypedTerm Paths.SubtermProperty -> Typed.TypedTerm Core.Term -> Typed.TypedTerm Paths.SubtermProperty-subtermPropertyWithTarget original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtermProperty"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtermProperty"),- Core.projectionFieldName = (Core.Name "path")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the annotatedAnnotation variant of hydra.paths.SubtermStep-subtermStepAnnotatedAnnotation :: Typed.TypedTerm Paths.SubtermStep-subtermStepAnnotatedAnnotation =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "annotatedAnnotation"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the annotatedBody variant of hydra.paths.SubtermStep-subtermStepAnnotatedBody :: Typed.TypedTerm Paths.SubtermStep-subtermStepAnnotatedBody =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "annotatedBody"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the applicationArgument variant of hydra.paths.SubtermStep-subtermStepApplicationArgument :: Typed.TypedTerm Paths.SubtermStep-subtermStepApplicationArgument =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "applicationArgument"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the applicationFunction variant of hydra.paths.SubtermStep-subtermStepApplicationFunction :: Typed.TypedTerm Paths.SubtermStep-subtermStepApplicationFunction =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "applicationFunction"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the casesCase variant of hydra.paths.SubtermStep-subtermStepCasesCase :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.SubtermStep-subtermStepCasesCase x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "casesCase"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the casesDefault variant of hydra.paths.SubtermStep-subtermStepCasesDefault :: Typed.TypedTerm Paths.SubtermStep-subtermStepCasesDefault =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "casesDefault"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the eitherLeft variant of hydra.paths.SubtermStep-subtermStepEitherLeft :: Typed.TypedTerm Paths.SubtermStep-subtermStepEitherLeft =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "eitherLeft"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the eitherRight variant of hydra.paths.SubtermStep-subtermStepEitherRight :: Typed.TypedTerm Paths.SubtermStep-subtermStepEitherRight =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "eitherRight"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the injectField variant of hydra.paths.SubtermStep-subtermStepInjectField :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.SubtermStep-subtermStepInjectField x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "injectField"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the lambdaBody variant of hydra.paths.SubtermStep-subtermStepLambdaBody :: Typed.TypedTerm Paths.SubtermStep-subtermStepLambdaBody =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "lambdaBody"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the letBinding variant of hydra.paths.SubtermStep-subtermStepLetBinding :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.SubtermStep-subtermStepLetBinding x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "letBinding"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the letBody variant of hydra.paths.SubtermStep-subtermStepLetBody :: Typed.TypedTerm Paths.SubtermStep-subtermStepLetBody =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "letBody"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the listElement variant of hydra.paths.SubtermStep-subtermStepListElement :: Typed.TypedTerm Int -> Typed.TypedTerm Paths.SubtermStep-subtermStepListElement x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "listElement"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the mapKey variant of hydra.paths.SubtermStep-subtermStepMapKey :: Typed.TypedTerm Int -> Typed.TypedTerm Paths.SubtermStep-subtermStepMapKey x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "mapKey"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the mapValue variant of hydra.paths.SubtermStep-subtermStepMapValue :: Typed.TypedTerm Int -> Typed.TypedTerm Paths.SubtermStep-subtermStepMapValue x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "mapValue"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the optionalGiven variant of hydra.paths.SubtermStep-subtermStepOptionalGiven :: Typed.TypedTerm Paths.SubtermStep-subtermStepOptionalGiven =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "optionalGiven"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the pairFirst variant of hydra.paths.SubtermStep-subtermStepPairFirst :: Typed.TypedTerm Paths.SubtermStep-subtermStepPairFirst =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "pairFirst"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the pairSecond variant of hydra.paths.SubtermStep-subtermStepPairSecond :: Typed.TypedTerm Paths.SubtermStep-subtermStepPairSecond =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "pairSecond"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the recordField variant of hydra.paths.SubtermStep-subtermStepRecordField :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.SubtermStep-subtermStepRecordField x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "recordField"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the setElement variant of hydra.paths.SubtermStep-subtermStepSetElement :: Typed.TypedTerm Int -> Typed.TypedTerm Paths.SubtermStep-subtermStepSetElement x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "setElement"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.paths.SubtermStep-subtermStepSubtermStep :: Typed.TypedName Paths.SubtermStep-subtermStepSubtermStep = Typed.TypedName (Core.Name "hydra.paths.SubtermStep")---- | DSL injection for the typeApplicationBody variant of hydra.paths.SubtermStep-subtermStepTypeApplicationBody :: Typed.TypedTerm Paths.SubtermStep-subtermStepTypeApplicationBody =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "typeApplicationBody"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the typeLambdaBody variant of hydra.paths.SubtermStep-subtermStepTypeLambdaBody :: Typed.TypedTerm Paths.SubtermStep-subtermStepTypeLambdaBody =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "typeLambdaBody"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the wrapBody variant of hydra.paths.SubtermStep-subtermStepWrapBody :: Typed.TypedTerm Paths.SubtermStep-subtermStepWrapBody =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "wrapBody"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL constructor for hydra.paths.SubtypeAttribute-subtypeAttribute :: Typed.TypedTerm Paths.SubtypePath -> Typed.TypedTerm Paths.TypeAttribute -> Typed.TypedTerm Paths.SubtypeAttribute-subtypeAttribute path target =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtypeAttribute"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (Typed.unTypedTerm path)},- Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (Typed.unTypedTerm target)}]}))---- | DSL accessor for the path field of hydra.paths.SubtypeAttribute-subtypeAttributePath :: Typed.TypedTerm Paths.SubtypeAttribute -> Typed.TypedTerm Paths.SubtypePath-subtypeAttributePath x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtypeAttribute"),- Core.projectionFieldName = (Core.Name "path")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.paths.SubtypeAttribute-subtypeAttributeSubtypeAttribute :: Typed.TypedName Paths.SubtypeAttribute-subtypeAttributeSubtypeAttribute = Typed.TypedName (Core.Name "hydra.paths.SubtypeAttribute")---- | DSL accessor for the target field of hydra.paths.SubtypeAttribute-subtypeAttributeTarget :: Typed.TypedTerm Paths.SubtypeAttribute -> Typed.TypedTerm Paths.TypeAttribute-subtypeAttributeTarget x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtypeAttribute"),- Core.projectionFieldName = (Core.Name "target")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the path field of hydra.paths.SubtypeAttribute-subtypeAttributeWithPath :: Typed.TypedTerm Paths.SubtypeAttribute -> Typed.TypedTerm Paths.SubtypePath -> Typed.TypedTerm Paths.SubtypeAttribute-subtypeAttributeWithPath original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtypeAttribute"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtypeAttribute"),- Core.projectionFieldName = (Core.Name "target")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the target field of hydra.paths.SubtypeAttribute-subtypeAttributeWithTarget :: Typed.TypedTerm Paths.SubtypeAttribute -> Typed.TypedTerm Paths.TypeAttribute -> Typed.TypedTerm Paths.SubtypeAttribute-subtypeAttributeWithTarget original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtypeAttribute"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtypeAttribute"),- Core.projectionFieldName = (Core.Name "path")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.paths.SubtypeEdge-subtypeEdge :: Typed.TypedTerm Paths.SubtypePath -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.SubtypeEdge-subtypeEdge path target =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtypeEdge"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (Typed.unTypedTerm path)},- Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (Typed.unTypedTerm target)}]}))---- | DSL accessor for the path field of hydra.paths.SubtypeEdge-subtypeEdgePath :: Typed.TypedTerm Paths.SubtypeEdge -> Typed.TypedTerm Paths.SubtypePath-subtypeEdgePath x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtypeEdge"),- Core.projectionFieldName = (Core.Name "path")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.paths.SubtypeEdge-subtypeEdgeSubtypeEdge :: Typed.TypedName Paths.SubtypeEdge-subtypeEdgeSubtypeEdge = Typed.TypedName (Core.Name "hydra.paths.SubtypeEdge")---- | DSL accessor for the target field of hydra.paths.SubtypeEdge-subtypeEdgeTarget :: Typed.TypedTerm Paths.SubtypeEdge -> Typed.TypedTerm Core.Name-subtypeEdgeTarget x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtypeEdge"),- Core.projectionFieldName = (Core.Name "target")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the path field of hydra.paths.SubtypeEdge-subtypeEdgeWithPath :: Typed.TypedTerm Paths.SubtypeEdge -> Typed.TypedTerm Paths.SubtypePath -> Typed.TypedTerm Paths.SubtypeEdge-subtypeEdgeWithPath original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtypeEdge"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtypeEdge"),- Core.projectionFieldName = (Core.Name "target")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the target field of hydra.paths.SubtypeEdge-subtypeEdgeWithTarget :: Typed.TypedTerm Paths.SubtypeEdge -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.SubtypeEdge-subtypeEdgeWithTarget original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtypeEdge"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtypeEdge"),- Core.projectionFieldName = (Core.Name "path")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.paths.SubtypeGraph-subtypeGraph :: Typed.TypedTerm [Paths.SubtypeNode] -> Typed.TypedTerm Paths.SubtypeGraph-subtypeGraph nodes =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtypeGraph"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "nodes"),- Core.fieldTerm = (Typed.unTypedTerm nodes)}]}))---- | DSL accessor for the nodes field of hydra.paths.SubtypeGraph-subtypeGraphNodes :: Typed.TypedTerm Paths.SubtypeGraph -> Typed.TypedTerm [Paths.SubtypeNode]-subtypeGraphNodes x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtypeGraph"),- Core.projectionFieldName = (Core.Name "nodes")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.paths.SubtypeGraph-subtypeGraphSubtypeGraph :: Typed.TypedName Paths.SubtypeGraph-subtypeGraphSubtypeGraph = Typed.TypedName (Core.Name "hydra.paths.SubtypeGraph")---- | DSL updater for the nodes field of hydra.paths.SubtypeGraph-subtypeGraphWithNodes :: Typed.TypedTerm Paths.SubtypeGraph -> Typed.TypedTerm [Paths.SubtypeNode] -> Typed.TypedTerm Paths.SubtypeGraph-subtypeGraphWithNodes original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtypeGraph"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "nodes"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the attribute variant of hydra.paths.SubtypeLink-subtypeLinkAttribute :: Typed.TypedTerm Paths.SubtypeAttribute -> Typed.TypedTerm Paths.SubtypeLink-subtypeLinkAttribute x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeLink"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "attribute"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the edge variant of hydra.paths.SubtypeLink-subtypeLinkEdge :: Typed.TypedTerm Paths.SubtypeEdge -> Typed.TypedTerm Paths.SubtypeLink-subtypeLinkEdge x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeLink"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "edge"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the property variant of hydra.paths.SubtypeLink-subtypeLinkProperty :: Typed.TypedTerm Paths.SubtypeProperty -> Typed.TypedTerm Paths.SubtypeLink-subtypeLinkProperty x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeLink"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "property"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.paths.SubtypeLink-subtypeLinkSubtypeLink :: Typed.TypedName Paths.SubtypeLink-subtypeLinkSubtypeLink = Typed.TypedName (Core.Name "hydra.paths.SubtypeLink")---- | DSL constructor for hydra.paths.SubtypeNode-subtypeNode :: Typed.TypedTerm Core.Name -> Typed.TypedTerm [Paths.SubtypeLink] -> Typed.TypedTerm Paths.SubtypeNode-subtypeNode name links =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtypeNode"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Typed.unTypedTerm name)},- Core.Field {- Core.fieldName = (Core.Name "links"),- Core.fieldTerm = (Typed.unTypedTerm links)}]}))---- | DSL accessor for the links field of hydra.paths.SubtypeNode-subtypeNodeLinks :: Typed.TypedTerm Paths.SubtypeNode -> Typed.TypedTerm [Paths.SubtypeLink]-subtypeNodeLinks x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtypeNode"),- Core.projectionFieldName = (Core.Name "links")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the name field of hydra.paths.SubtypeNode-subtypeNodeName :: Typed.TypedTerm Paths.SubtypeNode -> Typed.TypedTerm Core.Name-subtypeNodeName x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtypeNode"),- Core.projectionFieldName = (Core.Name "name")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.paths.SubtypeNode-subtypeNodeSubtypeNode :: Typed.TypedName Paths.SubtypeNode-subtypeNodeSubtypeNode = Typed.TypedName (Core.Name "hydra.paths.SubtypeNode")---- | DSL updater for the links field of hydra.paths.SubtypeNode-subtypeNodeWithLinks :: Typed.TypedTerm Paths.SubtypeNode -> Typed.TypedTerm [Paths.SubtypeLink] -> Typed.TypedTerm Paths.SubtypeNode-subtypeNodeWithLinks original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtypeNode"),- 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.paths.SubtypeNode"),- Core.projectionFieldName = (Core.Name "name")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "links"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the name field of hydra.paths.SubtypeNode-subtypeNodeWithName :: Typed.TypedTerm Paths.SubtypeNode -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.SubtypeNode-subtypeNodeWithName original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtypeNode"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "links"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtypeNode"),- Core.projectionFieldName = (Core.Name "links")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.paths.SubtypePath wrapper-subtypePath :: Typed.TypedTerm [Paths.SubtypeStep] -> Typed.TypedTerm Paths.SubtypePath-subtypePath x =- Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {- Core.wrappedTermTypeName = (Core.Name "hydra.paths.SubtypePath"),- Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.paths.SubtypePath-subtypePathSubtypePath :: Typed.TypedName Paths.SubtypePath-subtypePathSubtypePath = Typed.TypedName (Core.Name "hydra.paths.SubtypePath")---- | DSL constructor for hydra.paths.SubtypeProperty-subtypeProperty :: Typed.TypedTerm Paths.SubtypePath -> Typed.TypedTerm Core.Type -> Typed.TypedTerm Paths.SubtypeProperty-subtypeProperty path target =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtypeProperty"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (Typed.unTypedTerm path)},- Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (Typed.unTypedTerm target)}]}))---- | DSL accessor for the path field of hydra.paths.SubtypeProperty-subtypePropertyPath :: Typed.TypedTerm Paths.SubtypeProperty -> Typed.TypedTerm Paths.SubtypePath-subtypePropertyPath x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtypeProperty"),- Core.projectionFieldName = (Core.Name "path")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.paths.SubtypeProperty-subtypePropertySubtypeProperty :: Typed.TypedName Paths.SubtypeProperty-subtypePropertySubtypeProperty = Typed.TypedName (Core.Name "hydra.paths.SubtypeProperty")---- | DSL accessor for the target field of hydra.paths.SubtypeProperty-subtypePropertyTarget :: Typed.TypedTerm Paths.SubtypeProperty -> Typed.TypedTerm Core.Type-subtypePropertyTarget x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtypeProperty"),- Core.projectionFieldName = (Core.Name "target")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the path field of hydra.paths.SubtypeProperty-subtypePropertyWithPath :: Typed.TypedTerm Paths.SubtypeProperty -> Typed.TypedTerm Paths.SubtypePath -> Typed.TypedTerm Paths.SubtypeProperty-subtypePropertyWithPath original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtypeProperty"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtypeProperty"),- Core.projectionFieldName = (Core.Name "target")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the target field of hydra.paths.SubtypeProperty-subtypePropertyWithTarget :: Typed.TypedTerm Paths.SubtypeProperty -> Typed.TypedTerm Core.Type -> Typed.TypedTerm Paths.SubtypeProperty-subtypePropertyWithTarget original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtypeProperty"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.paths.SubtypeProperty"),- Core.projectionFieldName = (Core.Name "path")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the annotatedBody variant of hydra.paths.SubtypeStep-subtypeStepAnnotatedBody :: Typed.TypedTerm Paths.SubtypeStep-subtypeStepAnnotatedBody =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "annotatedBody"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the applicationArgument variant of hydra.paths.SubtypeStep-subtypeStepApplicationArgument :: Typed.TypedTerm Paths.SubtypeStep-subtypeStepApplicationArgument =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "applicationArgument"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the applicationFunction variant of hydra.paths.SubtypeStep-subtypeStepApplicationFunction :: Typed.TypedTerm Paths.SubtypeStep-subtypeStepApplicationFunction =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "applicationFunction"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the effectValue variant of hydra.paths.SubtypeStep-subtypeStepEffectValue :: Typed.TypedTerm Paths.SubtypeStep-subtypeStepEffectValue =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "effectValue"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the eitherLeft variant of hydra.paths.SubtypeStep-subtypeStepEitherLeft :: Typed.TypedTerm Paths.SubtypeStep-subtypeStepEitherLeft =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "eitherLeft"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the eitherRight variant of hydra.paths.SubtypeStep-subtypeStepEitherRight :: Typed.TypedTerm Paths.SubtypeStep-subtypeStepEitherRight =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "eitherRight"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the forallBody variant of hydra.paths.SubtypeStep-subtypeStepForallBody :: Typed.TypedTerm Paths.SubtypeStep-subtypeStepForallBody =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "forallBody"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the functionCodomain variant of hydra.paths.SubtypeStep-subtypeStepFunctionCodomain :: Typed.TypedTerm Paths.SubtypeStep-subtypeStepFunctionCodomain =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "functionCodomain"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the functionDomain variant of hydra.paths.SubtypeStep-subtypeStepFunctionDomain :: Typed.TypedTerm Paths.SubtypeStep-subtypeStepFunctionDomain =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "functionDomain"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the listElement variant of hydra.paths.SubtypeStep-subtypeStepListElement :: Typed.TypedTerm Paths.SubtypeStep-subtypeStepListElement =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "listElement"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the mapKeys variant of hydra.paths.SubtypeStep-subtypeStepMapKeys :: Typed.TypedTerm Paths.SubtypeStep-subtypeStepMapKeys =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "mapKeys"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the mapValues variant of hydra.paths.SubtypeStep-subtypeStepMapValues :: Typed.TypedTerm Paths.SubtypeStep-subtypeStepMapValues =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "mapValues"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the optionalElement variant of hydra.paths.SubtypeStep-subtypeStepOptionalElement :: Typed.TypedTerm Paths.SubtypeStep-subtypeStepOptionalElement =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "optionalElement"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the pairFirst variant of hydra.paths.SubtypeStep-subtypeStepPairFirst :: Typed.TypedTerm Paths.SubtypeStep-subtypeStepPairFirst =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "pairFirst"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the pairSecond variant of hydra.paths.SubtypeStep-subtypeStepPairSecond :: Typed.TypedTerm Paths.SubtypeStep-subtypeStepPairSecond =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "pairSecond"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the recordField variant of hydra.paths.SubtypeStep-subtypeStepRecordField :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.SubtypeStep-subtypeStepRecordField x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "recordField"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the setElement variant of hydra.paths.SubtypeStep-subtypeStepSetElement :: Typed.TypedTerm Paths.SubtypeStep-subtypeStepSetElement =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "setElement"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.paths.SubtypeStep-subtypeStepSubtypeStep :: Typed.TypedName Paths.SubtypeStep-subtypeStepSubtypeStep = Typed.TypedName (Core.Name "hydra.paths.SubtypeStep")---- | DSL injection for the unionField variant of hydra.paths.SubtypeStep-subtypeStepUnionField :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.SubtypeStep-subtypeStepUnionField x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "unionField"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the wrapBody variant of hydra.paths.SubtypeStep-subtypeStepWrapBody :: Typed.TypedTerm Paths.SubtypeStep-subtypeStepWrapBody =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "wrapBody"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the casesTypeName variant of hydra.paths.TermAttribute-termAttributeCasesTypeName :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TermAttribute-termAttributeCasesTypeName x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TermAttribute"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "casesTypeName"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the injectTypeName variant of hydra.paths.TermAttribute-termAttributeInjectTypeName :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TermAttribute-termAttributeInjectTypeName x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TermAttribute"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "injectTypeName"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the lambdaDomainGiven variant of hydra.paths.TermAttribute-termAttributeLambdaDomainGiven :: Typed.TypedTerm Core.Type -> Typed.TypedTerm Paths.TermAttribute-termAttributeLambdaDomainGiven x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TermAttribute"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "lambdaDomainGiven"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the lambdaParameter variant of hydra.paths.TermAttribute-termAttributeLambdaParameter :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TermAttribute-termAttributeLambdaParameter x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TermAttribute"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "lambdaParameter"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the letBindingTypeSchemeGiven variant of hydra.paths.TermAttribute-termAttributeLetBindingTypeSchemeGiven :: Typed.TypedTerm (Core.Name, Core.TypeScheme) -> Typed.TypedTerm Paths.TermAttribute-termAttributeLetBindingTypeSchemeGiven x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TermAttribute"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "letBindingTypeSchemeGiven"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the projectFieldName variant of hydra.paths.TermAttribute-termAttributeProjectFieldName :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TermAttribute-termAttributeProjectFieldName x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TermAttribute"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "projectFieldName"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the projectTypeName variant of hydra.paths.TermAttribute-termAttributeProjectTypeName :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TermAttribute-termAttributeProjectTypeName x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TermAttribute"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "projectTypeName"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the recordTypeName variant of hydra.paths.TermAttribute-termAttributeRecordTypeName :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TermAttribute-termAttributeRecordTypeName x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TermAttribute"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "recordTypeName"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.paths.TermAttribute-termAttributeTermAttribute :: Typed.TypedName Paths.TermAttribute-termAttributeTermAttribute = Typed.TypedName (Core.Name "hydra.paths.TermAttribute")---- | DSL injection for the typeApplicationType variant of hydra.paths.TermAttribute-termAttributeTypeApplicationType :: Typed.TypedTerm Core.Type -> Typed.TypedTerm Paths.TermAttribute-termAttributeTypeApplicationType x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TermAttribute"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "typeApplicationType"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the typeLambdaParameter variant of hydra.paths.TermAttribute-termAttributeTypeLambdaParameter :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TermAttribute-termAttributeTypeLambdaParameter x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TermAttribute"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "typeLambdaParameter"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the wrapTypeName variant of hydra.paths.TermAttribute-termAttributeWrapTypeName :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TermAttribute-termAttributeWrapTypeName x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TermAttribute"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "wrapTypeName"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the annotatedAnnotation variant of hydra.paths.TypeAttribute-typeAttributeAnnotatedAnnotation :: Typed.TypedTerm Core.Term -> Typed.TypedTerm Paths.TypeAttribute-typeAttributeAnnotatedAnnotation x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TypeAttribute"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "annotatedAnnotation"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the forallParameter variant of hydra.paths.TypeAttribute-typeAttributeForallParameter :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TypeAttribute-typeAttributeForallParameter x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TypeAttribute"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "forallParameter"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.paths.TypeAttribute-typeAttributeTypeAttribute :: Typed.TypedName Paths.TypeAttribute-typeAttributeTypeAttribute = Typed.TypedName (Core.Name "hydra.paths.TypeAttribute")+import qualified Data.Map as M++-- | DSL constructor for hydra.paths.LambdaVariableReference+lambdaVariableReference :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TermNodeId -> Typed.TypedTerm Core.Type -> Typed.TypedTerm Paths.LambdaVariableReference+lambdaVariableReference variable boundByNode type_ =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.LambdaVariableReference"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "variable"),+ Core.fieldTerm = (Typed.unTypedTerm variable)},+ Core.Field {+ Core.fieldName = (Core.Name "boundByNode"),+ Core.fieldTerm = (Typed.unTypedTerm boundByNode)},+ Core.Field {+ Core.fieldName = (Core.Name "type"),+ Core.fieldTerm = (Typed.unTypedTerm type_)}]}))++-- | DSL accessor for the boundByNode field of hydra.paths.LambdaVariableReference+lambdaVariableReferenceBoundByNode :: Typed.TypedTerm Paths.LambdaVariableReference -> Typed.TypedTerm Paths.TermNodeId+lambdaVariableReferenceBoundByNode x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.LambdaVariableReference"),+ Core.projectionFieldName = (Core.Name "boundByNode")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.paths.LambdaVariableReference+lambdaVariableReferenceLambdaVariableReference :: Typed.TypedName Paths.LambdaVariableReference+lambdaVariableReferenceLambdaVariableReference = Typed.TypedName (Core.Name "hydra.paths.LambdaVariableReference")++-- | DSL accessor for the type field of hydra.paths.LambdaVariableReference+lambdaVariableReferenceType :: Typed.TypedTerm Paths.LambdaVariableReference -> Typed.TypedTerm Core.Type+lambdaVariableReferenceType x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.LambdaVariableReference"),+ Core.projectionFieldName = (Core.Name "type")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the variable field of hydra.paths.LambdaVariableReference+lambdaVariableReferenceVariable :: Typed.TypedTerm Paths.LambdaVariableReference -> Typed.TypedTerm Core.Name+lambdaVariableReferenceVariable x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.LambdaVariableReference"),+ Core.projectionFieldName = (Core.Name "variable")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the boundByNode field of hydra.paths.LambdaVariableReference+lambdaVariableReferenceWithBoundByNode :: Typed.TypedTerm Paths.LambdaVariableReference -> Typed.TypedTerm Paths.TermNodeId -> Typed.TypedTerm Paths.LambdaVariableReference+lambdaVariableReferenceWithBoundByNode original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.LambdaVariableReference"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "variable"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.LambdaVariableReference"),+ Core.projectionFieldName = (Core.Name "variable")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "boundByNode"),+ 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.paths.LambdaVariableReference"),+ Core.projectionFieldName = (Core.Name "type")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.paths.LambdaVariableReference+lambdaVariableReferenceWithType :: Typed.TypedTerm Paths.LambdaVariableReference -> Typed.TypedTerm Core.Type -> Typed.TypedTerm Paths.LambdaVariableReference+lambdaVariableReferenceWithType original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.LambdaVariableReference"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "variable"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.LambdaVariableReference"),+ Core.projectionFieldName = (Core.Name "variable")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "boundByNode"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.LambdaVariableReference"),+ Core.projectionFieldName = (Core.Name "boundByNode")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "type"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the variable field of hydra.paths.LambdaVariableReference+lambdaVariableReferenceWithVariable :: Typed.TypedTerm Paths.LambdaVariableReference -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.LambdaVariableReference+lambdaVariableReferenceWithVariable original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.LambdaVariableReference"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "variable"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)},+ Core.Field {+ Core.fieldName = (Core.Name "boundByNode"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.LambdaVariableReference"),+ Core.projectionFieldName = (Core.Name "boundByNode")})),+ 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.paths.LambdaVariableReference"),+ Core.projectionFieldName = (Core.Name "type")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.paths.LetVariableReference+letVariableReference :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TermNodeId -> Typed.TypedTerm Core.Type -> Typed.TypedTerm Paths.LetVariableReference+letVariableReference variable bindingNode type_ =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.LetVariableReference"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "variable"),+ Core.fieldTerm = (Typed.unTypedTerm variable)},+ Core.Field {+ Core.fieldName = (Core.Name "bindingNode"),+ Core.fieldTerm = (Typed.unTypedTerm bindingNode)},+ Core.Field {+ Core.fieldName = (Core.Name "type"),+ Core.fieldTerm = (Typed.unTypedTerm type_)}]}))++-- | DSL accessor for the bindingNode field of hydra.paths.LetVariableReference+letVariableReferenceBindingNode :: Typed.TypedTerm Paths.LetVariableReference -> Typed.TypedTerm Paths.TermNodeId+letVariableReferenceBindingNode x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.LetVariableReference"),+ Core.projectionFieldName = (Core.Name "bindingNode")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.paths.LetVariableReference+letVariableReferenceLetVariableReference :: Typed.TypedName Paths.LetVariableReference+letVariableReferenceLetVariableReference = Typed.TypedName (Core.Name "hydra.paths.LetVariableReference")++-- | DSL accessor for the type field of hydra.paths.LetVariableReference+letVariableReferenceType :: Typed.TypedTerm Paths.LetVariableReference -> Typed.TypedTerm Core.Type+letVariableReferenceType x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.LetVariableReference"),+ Core.projectionFieldName = (Core.Name "type")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the variable field of hydra.paths.LetVariableReference+letVariableReferenceVariable :: Typed.TypedTerm Paths.LetVariableReference -> Typed.TypedTerm Core.Name+letVariableReferenceVariable x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.LetVariableReference"),+ Core.projectionFieldName = (Core.Name "variable")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the bindingNode field of hydra.paths.LetVariableReference+letVariableReferenceWithBindingNode :: Typed.TypedTerm Paths.LetVariableReference -> Typed.TypedTerm Paths.TermNodeId -> Typed.TypedTerm Paths.LetVariableReference+letVariableReferenceWithBindingNode original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.LetVariableReference"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "variable"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.LetVariableReference"),+ Core.projectionFieldName = (Core.Name "variable")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "bindingNode"),+ 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.paths.LetVariableReference"),+ Core.projectionFieldName = (Core.Name "type")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.paths.LetVariableReference+letVariableReferenceWithType :: Typed.TypedTerm Paths.LetVariableReference -> Typed.TypedTerm Core.Type -> Typed.TypedTerm Paths.LetVariableReference+letVariableReferenceWithType original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.LetVariableReference"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "variable"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.LetVariableReference"),+ Core.projectionFieldName = (Core.Name "variable")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "bindingNode"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.LetVariableReference"),+ Core.projectionFieldName = (Core.Name "bindingNode")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "type"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the variable field of hydra.paths.LetVariableReference+letVariableReferenceWithVariable :: Typed.TypedTerm Paths.LetVariableReference -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.LetVariableReference+letVariableReferenceWithVariable original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.LetVariableReference"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "variable"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)},+ Core.Field {+ Core.fieldName = (Core.Name "bindingNode"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.LetVariableReference"),+ Core.projectionFieldName = (Core.Name "bindingNode")})),+ 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.paths.LetVariableReference"),+ Core.projectionFieldName = (Core.Name "type")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.paths.NominalTypeReference+nominalTypeReference :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.NominalTypeReference+nominalTypeReference name =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.NominalTypeReference"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "name"),+ Core.fieldTerm = (Typed.unTypedTerm name)}]}))++-- | DSL accessor for the name field of hydra.paths.NominalTypeReference+nominalTypeReferenceName :: Typed.TypedTerm Paths.NominalTypeReference -> Typed.TypedTerm Core.Name+nominalTypeReferenceName x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.NominalTypeReference"),+ Core.projectionFieldName = (Core.Name "name")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.paths.NominalTypeReference+nominalTypeReferenceNominalTypeReference :: Typed.TypedName Paths.NominalTypeReference+nominalTypeReferenceNominalTypeReference = Typed.TypedName (Core.Name "hydra.paths.NominalTypeReference")++-- | DSL updater for the name field of hydra.paths.NominalTypeReference+nominalTypeReferenceWithName :: Typed.TypedTerm Paths.NominalTypeReference -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.NominalTypeReference+nominalTypeReferenceWithName original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.NominalTypeReference"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "name"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.paths.PrimitiveReference+primitiveReference :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Core.Type -> Typed.TypedTerm Paths.PrimitiveReference+primitiveReference name type_ =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.PrimitiveReference"),+ 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.paths.PrimitiveReference+primitiveReferenceName :: Typed.TypedTerm Paths.PrimitiveReference -> Typed.TypedTerm Core.Name+primitiveReferenceName x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.PrimitiveReference"),+ Core.projectionFieldName = (Core.Name "name")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.paths.PrimitiveReference+primitiveReferencePrimitiveReference :: Typed.TypedName Paths.PrimitiveReference+primitiveReferencePrimitiveReference = Typed.TypedName (Core.Name "hydra.paths.PrimitiveReference")++-- | DSL accessor for the type field of hydra.paths.PrimitiveReference+primitiveReferenceType :: Typed.TypedTerm Paths.PrimitiveReference -> Typed.TypedTerm Core.Type+primitiveReferenceType x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.PrimitiveReference"),+ Core.projectionFieldName = (Core.Name "type")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the name field of hydra.paths.PrimitiveReference+primitiveReferenceWithName :: Typed.TypedTerm Paths.PrimitiveReference -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.PrimitiveReference+primitiveReferenceWithName original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.PrimitiveReference"),+ 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.paths.PrimitiveReference"),+ Core.projectionFieldName = (Core.Name "type")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.paths.PrimitiveReference+primitiveReferenceWithType :: Typed.TypedTerm Paths.PrimitiveReference -> Typed.TypedTerm Core.Type -> Typed.TypedTerm Paths.PrimitiveReference+primitiveReferenceWithType original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.PrimitiveReference"),+ 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.paths.PrimitiveReference"),+ 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.paths.SubtermLink+subtermLink :: Typed.TypedTerm Paths.SubtermStep -> Typed.TypedTerm Paths.TermNode -> Typed.TypedTerm Paths.SubtermLink+subtermLink step child =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.SubtermLink"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "step"),+ Core.fieldTerm = (Typed.unTypedTerm step)},+ Core.Field {+ Core.fieldName = (Core.Name "child"),+ Core.fieldTerm = (Typed.unTypedTerm child)}]}))++-- | DSL accessor for the child field of hydra.paths.SubtermLink+subtermLinkChild :: Typed.TypedTerm Paths.SubtermLink -> Typed.TypedTerm Paths.TermNode+subtermLinkChild x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.SubtermLink"),+ Core.projectionFieldName = (Core.Name "child")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the step field of hydra.paths.SubtermLink+subtermLinkStep :: Typed.TypedTerm Paths.SubtermLink -> Typed.TypedTerm Paths.SubtermStep+subtermLinkStep x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.SubtermLink"),+ Core.projectionFieldName = (Core.Name "step")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.paths.SubtermLink+subtermLinkSubtermLink :: Typed.TypedName Paths.SubtermLink+subtermLinkSubtermLink = Typed.TypedName (Core.Name "hydra.paths.SubtermLink")++-- | DSL updater for the child field of hydra.paths.SubtermLink+subtermLinkWithChild :: Typed.TypedTerm Paths.SubtermLink -> Typed.TypedTerm Paths.TermNode -> Typed.TypedTerm Paths.SubtermLink+subtermLinkWithChild original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.SubtermLink"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "step"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.SubtermLink"),+ Core.projectionFieldName = (Core.Name "step")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "child"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the step field of hydra.paths.SubtermLink+subtermLinkWithStep :: Typed.TypedTerm Paths.SubtermLink -> Typed.TypedTerm Paths.SubtermStep -> Typed.TypedTerm Paths.SubtermLink+subtermLinkWithStep original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.SubtermLink"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "step"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)},+ Core.Field {+ Core.fieldName = (Core.Name "child"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.SubtermLink"),+ Core.projectionFieldName = (Core.Name "child")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.paths.SubtermPath wrapper+subtermPath :: Typed.TypedTerm [Paths.SubtermStep] -> Typed.TypedTerm Paths.SubtermPath+subtermPath x =+ Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {+ Core.wrappedTermTypeName = (Core.Name "hydra.paths.SubtermPath"),+ Core.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.paths.SubtermPath+subtermPathSubtermPath :: Typed.TypedName Paths.SubtermPath+subtermPathSubtermPath = Typed.TypedName (Core.Name "hydra.paths.SubtermPath")++-- | DSL injection for the annotatedAnnotation variant of hydra.paths.SubtermStep+subtermStepAnnotatedAnnotation :: Typed.TypedTerm Paths.SubtermStep+subtermStepAnnotatedAnnotation =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "annotatedAnnotation"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the annotatedBody variant of hydra.paths.SubtermStep+subtermStepAnnotatedBody :: Typed.TypedTerm Paths.SubtermStep+subtermStepAnnotatedBody =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "annotatedBody"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the applicationArgument variant of hydra.paths.SubtermStep+subtermStepApplicationArgument :: Typed.TypedTerm Paths.SubtermStep+subtermStepApplicationArgument =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "applicationArgument"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the applicationFunction variant of hydra.paths.SubtermStep+subtermStepApplicationFunction :: Typed.TypedTerm Paths.SubtermStep+subtermStepApplicationFunction =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "applicationFunction"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the casesCase variant of hydra.paths.SubtermStep+subtermStepCasesCase :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.SubtermStep+subtermStepCasesCase x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "casesCase"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the casesDefault variant of hydra.paths.SubtermStep+subtermStepCasesDefault :: Typed.TypedTerm Paths.SubtermStep+subtermStepCasesDefault =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "casesDefault"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the eitherLeft variant of hydra.paths.SubtermStep+subtermStepEitherLeft :: Typed.TypedTerm Paths.SubtermStep+subtermStepEitherLeft =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "eitherLeft"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the eitherRight variant of hydra.paths.SubtermStep+subtermStepEitherRight :: Typed.TypedTerm Paths.SubtermStep+subtermStepEitherRight =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "eitherRight"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the injectField variant of hydra.paths.SubtermStep+subtermStepInjectField :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.SubtermStep+subtermStepInjectField x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "injectField"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the lambdaBody variant of hydra.paths.SubtermStep+subtermStepLambdaBody :: Typed.TypedTerm Paths.SubtermStep+subtermStepLambdaBody =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "lambdaBody"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the letBinding variant of hydra.paths.SubtermStep+subtermStepLetBinding :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.SubtermStep+subtermStepLetBinding x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "letBinding"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the letBody variant of hydra.paths.SubtermStep+subtermStepLetBody :: Typed.TypedTerm Paths.SubtermStep+subtermStepLetBody =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "letBody"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the listElement variant of hydra.paths.SubtermStep+subtermStepListElement :: Typed.TypedTerm Int -> Typed.TypedTerm Paths.SubtermStep+subtermStepListElement x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "listElement"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the mapEntry variant of hydra.paths.SubtermStep+subtermStepMapEntry :: Typed.TypedTerm Int -> Typed.TypedTerm Paths.SubtermStep+subtermStepMapEntry x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "mapEntry"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the optionalGiven variant of hydra.paths.SubtermStep+subtermStepOptionalGiven :: Typed.TypedTerm Paths.SubtermStep+subtermStepOptionalGiven =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "optionalGiven"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the pairFirst variant of hydra.paths.SubtermStep+subtermStepPairFirst :: Typed.TypedTerm Paths.SubtermStep+subtermStepPairFirst =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "pairFirst"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the pairSecond variant of hydra.paths.SubtermStep+subtermStepPairSecond :: Typed.TypedTerm Paths.SubtermStep+subtermStepPairSecond =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "pairSecond"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the recordField variant of hydra.paths.SubtermStep+subtermStepRecordField :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.SubtermStep+subtermStepRecordField x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "recordField"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the setElement variant of hydra.paths.SubtermStep+subtermStepSetElement :: Typed.TypedTerm Int -> Typed.TypedTerm Paths.SubtermStep+subtermStepSetElement x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "setElement"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.paths.SubtermStep+subtermStepSubtermStep :: Typed.TypedName Paths.SubtermStep+subtermStepSubtermStep = Typed.TypedName (Core.Name "hydra.paths.SubtermStep")++-- | DSL injection for the typeApplicationBody variant of hydra.paths.SubtermStep+subtermStepTypeApplicationBody :: Typed.TypedTerm Paths.SubtermStep+subtermStepTypeApplicationBody =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "typeApplicationBody"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the typeLambdaBody variant of hydra.paths.SubtermStep+subtermStepTypeLambdaBody :: Typed.TypedTerm Paths.SubtermStep+subtermStepTypeLambdaBody =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "typeLambdaBody"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the wrapBody variant of hydra.paths.SubtermStep+subtermStepWrapBody :: Typed.TypedTerm Paths.SubtermStep+subtermStepWrapBody =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "wrapBody"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL constructor for hydra.paths.SubtypeLink+subtypeLink :: Typed.TypedTerm Paths.SubtypeStep -> Typed.TypedTerm Paths.TypeNode -> Typed.TypedTerm Paths.SubtypeLink+subtypeLink step child =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.SubtypeLink"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "step"),+ Core.fieldTerm = (Typed.unTypedTerm step)},+ Core.Field {+ Core.fieldName = (Core.Name "child"),+ Core.fieldTerm = (Typed.unTypedTerm child)}]}))++-- | DSL accessor for the child field of hydra.paths.SubtypeLink+subtypeLinkChild :: Typed.TypedTerm Paths.SubtypeLink -> Typed.TypedTerm Paths.TypeNode+subtypeLinkChild x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.SubtypeLink"),+ Core.projectionFieldName = (Core.Name "child")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the step field of hydra.paths.SubtypeLink+subtypeLinkStep :: Typed.TypedTerm Paths.SubtypeLink -> Typed.TypedTerm Paths.SubtypeStep+subtypeLinkStep x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.SubtypeLink"),+ Core.projectionFieldName = (Core.Name "step")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.paths.SubtypeLink+subtypeLinkSubtypeLink :: Typed.TypedName Paths.SubtypeLink+subtypeLinkSubtypeLink = Typed.TypedName (Core.Name "hydra.paths.SubtypeLink")++-- | DSL updater for the child field of hydra.paths.SubtypeLink+subtypeLinkWithChild :: Typed.TypedTerm Paths.SubtypeLink -> Typed.TypedTerm Paths.TypeNode -> Typed.TypedTerm Paths.SubtypeLink+subtypeLinkWithChild original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.SubtypeLink"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "step"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.SubtypeLink"),+ Core.projectionFieldName = (Core.Name "step")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "child"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the step field of hydra.paths.SubtypeLink+subtypeLinkWithStep :: Typed.TypedTerm Paths.SubtypeLink -> Typed.TypedTerm Paths.SubtypeStep -> Typed.TypedTerm Paths.SubtypeLink+subtypeLinkWithStep original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.SubtypeLink"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "step"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)},+ Core.Field {+ Core.fieldName = (Core.Name "child"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.SubtypeLink"),+ Core.projectionFieldName = (Core.Name "child")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.paths.SubtypePath wrapper+subtypePath :: Typed.TypedTerm [Paths.SubtypeStep] -> Typed.TypedTerm Paths.SubtypePath+subtypePath x =+ Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {+ Core.wrappedTermTypeName = (Core.Name "hydra.paths.SubtypePath"),+ Core.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.paths.SubtypePath+subtypePathSubtypePath :: Typed.TypedName Paths.SubtypePath+subtypePathSubtypePath = Typed.TypedName (Core.Name "hydra.paths.SubtypePath")++-- | DSL injection for the annotatedBody variant of hydra.paths.SubtypeStep+subtypeStepAnnotatedBody :: Typed.TypedTerm Paths.SubtypeStep+subtypeStepAnnotatedBody =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "annotatedBody"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the applicationArgument variant of hydra.paths.SubtypeStep+subtypeStepApplicationArgument :: Typed.TypedTerm Paths.SubtypeStep+subtypeStepApplicationArgument =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "applicationArgument"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the applicationFunction variant of hydra.paths.SubtypeStep+subtypeStepApplicationFunction :: Typed.TypedTerm Paths.SubtypeStep+subtypeStepApplicationFunction =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "applicationFunction"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the effectValue variant of hydra.paths.SubtypeStep+subtypeStepEffectValue :: Typed.TypedTerm Paths.SubtypeStep+subtypeStepEffectValue =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "effectValue"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the eitherLeft variant of hydra.paths.SubtypeStep+subtypeStepEitherLeft :: Typed.TypedTerm Paths.SubtypeStep+subtypeStepEitherLeft =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "eitherLeft"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the eitherRight variant of hydra.paths.SubtypeStep+subtypeStepEitherRight :: Typed.TypedTerm Paths.SubtypeStep+subtypeStepEitherRight =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "eitherRight"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the forallBody variant of hydra.paths.SubtypeStep+subtypeStepForallBody :: Typed.TypedTerm Paths.SubtypeStep+subtypeStepForallBody =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "forallBody"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the functionCodomain variant of hydra.paths.SubtypeStep+subtypeStepFunctionCodomain :: Typed.TypedTerm Paths.SubtypeStep+subtypeStepFunctionCodomain =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "functionCodomain"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the functionDomain variant of hydra.paths.SubtypeStep+subtypeStepFunctionDomain :: Typed.TypedTerm Paths.SubtypeStep+subtypeStepFunctionDomain =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "functionDomain"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the listElement variant of hydra.paths.SubtypeStep+subtypeStepListElement :: Typed.TypedTerm Paths.SubtypeStep+subtypeStepListElement =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "listElement"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the mapKeys variant of hydra.paths.SubtypeStep+subtypeStepMapKeys :: Typed.TypedTerm Paths.SubtypeStep+subtypeStepMapKeys =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "mapKeys"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the mapValues variant of hydra.paths.SubtypeStep+subtypeStepMapValues :: Typed.TypedTerm Paths.SubtypeStep+subtypeStepMapValues =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "mapValues"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the optionalElement variant of hydra.paths.SubtypeStep+subtypeStepOptionalElement :: Typed.TypedTerm Paths.SubtypeStep+subtypeStepOptionalElement =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "optionalElement"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the pairFirst variant of hydra.paths.SubtypeStep+subtypeStepPairFirst :: Typed.TypedTerm Paths.SubtypeStep+subtypeStepPairFirst =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "pairFirst"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the pairSecond variant of hydra.paths.SubtypeStep+subtypeStepPairSecond :: Typed.TypedTerm Paths.SubtypeStep+subtypeStepPairSecond =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "pairSecond"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the recordField variant of hydra.paths.SubtypeStep+subtypeStepRecordField :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.SubtypeStep+subtypeStepRecordField x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "recordField"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the setElement variant of hydra.paths.SubtypeStep+subtypeStepSetElement :: Typed.TypedTerm Paths.SubtypeStep+subtypeStepSetElement =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "setElement"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL name token for hydra.paths.SubtypeStep+subtypeStepSubtypeStep :: Typed.TypedName Paths.SubtypeStep+subtypeStepSubtypeStep = Typed.TypedName (Core.Name "hydra.paths.SubtypeStep")++-- | DSL injection for the unionField variant of hydra.paths.SubtypeStep+subtypeStepUnionField :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.SubtypeStep+subtypeStepUnionField x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "unionField"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the wrapBody variant of hydra.paths.SubtypeStep+subtypeStepWrapBody :: Typed.TypedTerm Paths.SubtypeStep+subtypeStepWrapBody =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeStep"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "wrapBody"),+ Core.fieldTerm = Core.TermUnit}}))++-- | DSL injection for the casesTypeName variant of hydra.paths.TermAttributeLink+termAttributeLinkCasesTypeName :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TermAttributeLink+termAttributeLinkCasesTypeName x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "casesTypeName"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the injectTypeName variant of hydra.paths.TermAttributeLink+termAttributeLinkInjectTypeName :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TermAttributeLink+termAttributeLinkInjectTypeName x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "injectTypeName"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the lambdaDomainGiven variant of hydra.paths.TermAttributeLink+termAttributeLinkLambdaDomainGiven :: Typed.TypedTerm Core.Type -> Typed.TypedTerm Paths.TermAttributeLink+termAttributeLinkLambdaDomainGiven x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "lambdaDomainGiven"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the lambdaParameter variant of hydra.paths.TermAttributeLink+termAttributeLinkLambdaParameter :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TermAttributeLink+termAttributeLinkLambdaParameter x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "lambdaParameter"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the letBindingTypeSchemeGiven variant of hydra.paths.TermAttributeLink+termAttributeLinkLetBindingTypeSchemeGiven :: Typed.TypedTerm (Core.Name, Core.TypeScheme) -> Typed.TypedTerm Paths.TermAttributeLink+termAttributeLinkLetBindingTypeSchemeGiven x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "letBindingTypeSchemeGiven"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the literal variant of hydra.paths.TermAttributeLink+termAttributeLinkLiteral :: Typed.TypedTerm Core.Literal -> Typed.TypedTerm Paths.TermAttributeLink+termAttributeLinkLiteral x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "literal"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the projectFieldName variant of hydra.paths.TermAttributeLink+termAttributeLinkProjectFieldName :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TermAttributeLink+termAttributeLinkProjectFieldName x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "projectFieldName"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the projectTypeName variant of hydra.paths.TermAttributeLink+termAttributeLinkProjectTypeName :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TermAttributeLink+termAttributeLinkProjectTypeName x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "projectTypeName"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the recordTypeName variant of hydra.paths.TermAttributeLink+termAttributeLinkRecordTypeName :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TermAttributeLink+termAttributeLinkRecordTypeName x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "recordTypeName"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.paths.TermAttributeLink+termAttributeLinkTermAttributeLink :: Typed.TypedName Paths.TermAttributeLink+termAttributeLinkTermAttributeLink = Typed.TypedName (Core.Name "hydra.paths.TermAttributeLink")++-- | DSL injection for the typeApplicationType variant of hydra.paths.TermAttributeLink+termAttributeLinkTypeApplicationType :: Typed.TypedTerm Core.Type -> Typed.TypedTerm Paths.TermAttributeLink+termAttributeLinkTypeApplicationType x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "typeApplicationType"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the typeLambdaParameter variant of hydra.paths.TermAttributeLink+termAttributeLinkTypeLambdaParameter :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TermAttributeLink+termAttributeLinkTypeLambdaParameter x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "typeLambdaParameter"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the unwrapTypeName variant of hydra.paths.TermAttributeLink+termAttributeLinkUnwrapTypeName :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TermAttributeLink+termAttributeLinkUnwrapTypeName x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "unwrapTypeName"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the wrapTypeName variant of hydra.paths.TermAttributeLink+termAttributeLinkWrapTypeName :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TermAttributeLink+termAttributeLinkWrapTypeName x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "wrapTypeName"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.paths.TermGraph+termGraph :: Typed.TypedTerm (M.Map Core.Name Paths.TermNode) -> Typed.TypedTerm Paths.TermGraph+termGraph roots =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TermGraph"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "roots"),+ Core.fieldTerm = (Typed.unTypedTerm roots)}]}))++-- | DSL accessor for the roots field of hydra.paths.TermGraph+termGraphRoots :: Typed.TypedTerm Paths.TermGraph -> Typed.TypedTerm (M.Map Core.Name Paths.TermNode)+termGraphRoots x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TermGraph"),+ Core.projectionFieldName = (Core.Name "roots")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.paths.TermGraph+termGraphTermGraph :: Typed.TypedName Paths.TermGraph+termGraphTermGraph = Typed.TypedName (Core.Name "hydra.paths.TermGraph")++-- | DSL updater for the roots field of hydra.paths.TermGraph+termGraphWithRoots :: Typed.TypedTerm Paths.TermGraph -> Typed.TypedTerm (M.Map Core.Name Paths.TermNode) -> Typed.TypedTerm Paths.TermGraph+termGraphWithRoots original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TermGraph"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "roots"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the attribute variant of hydra.paths.TermLink+termLinkAttribute :: Typed.TypedTerm Paths.TermAttributeLink -> Typed.TypedTerm Paths.TermLink+termLinkAttribute x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "attribute"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the reference variant of hydra.paths.TermLink+termLinkReference :: Typed.TypedTerm Paths.TermReferenceLink -> Typed.TypedTerm Paths.TermLink+termLinkReference x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "reference"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the subterm variant of hydra.paths.TermLink+termLinkSubterm :: Typed.TypedTerm Paths.SubtermLink -> Typed.TypedTerm Paths.TermLink+termLinkSubterm x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "subterm"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.paths.TermLink+termLinkTermLink :: Typed.TypedName Paths.TermLink+termLinkTermLink = Typed.TypedName (Core.Name "hydra.paths.TermLink")++-- | DSL constructor for hydra.paths.TermNode+termNode :: Typed.TypedTerm Core.Term -> Typed.TypedTerm Core.Type -> Typed.TypedTerm [Paths.TermLink] -> Typed.TypedTerm Paths.TermNode+termNode term type_ links =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TermNode"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "term"),+ Core.fieldTerm = (Typed.unTypedTerm term)},+ Core.Field {+ Core.fieldName = (Core.Name "type"),+ Core.fieldTerm = (Typed.unTypedTerm type_)},+ Core.Field {+ Core.fieldName = (Core.Name "links"),+ Core.fieldTerm = (Typed.unTypedTerm links)}]}))++-- | DSL constructor for hydra.paths.TermNodeId+termNodeId :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.SubtermPath -> Typed.TypedTerm Paths.TermNodeId+termNodeId root path =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TermNodeId"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "root"),+ Core.fieldTerm = (Typed.unTypedTerm root)},+ Core.Field {+ Core.fieldName = (Core.Name "path"),+ Core.fieldTerm = (Typed.unTypedTerm path)}]}))++-- | DSL accessor for the path field of hydra.paths.TermNodeId+termNodeIdPath :: Typed.TypedTerm Paths.TermNodeId -> Typed.TypedTerm Paths.SubtermPath+termNodeIdPath x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TermNodeId"),+ Core.projectionFieldName = (Core.Name "path")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the root field of hydra.paths.TermNodeId+termNodeIdRoot :: Typed.TypedTerm Paths.TermNodeId -> Typed.TypedTerm Core.Name+termNodeIdRoot x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TermNodeId"),+ Core.projectionFieldName = (Core.Name "root")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.paths.TermNodeId+termNodeIdTermNodeId :: Typed.TypedName Paths.TermNodeId+termNodeIdTermNodeId = Typed.TypedName (Core.Name "hydra.paths.TermNodeId")++-- | DSL updater for the path field of hydra.paths.TermNodeId+termNodeIdWithPath :: Typed.TypedTerm Paths.TermNodeId -> Typed.TypedTerm Paths.SubtermPath -> Typed.TypedTerm Paths.TermNodeId+termNodeIdWithPath original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TermNodeId"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "root"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TermNodeId"),+ Core.projectionFieldName = (Core.Name "root")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "path"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the root field of hydra.paths.TermNodeId+termNodeIdWithRoot :: Typed.TypedTerm Paths.TermNodeId -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TermNodeId+termNodeIdWithRoot original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TermNodeId"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "root"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)},+ Core.Field {+ Core.fieldName = (Core.Name "path"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TermNodeId"),+ Core.projectionFieldName = (Core.Name "path")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL accessor for the links field of hydra.paths.TermNode+termNodeLinks :: Typed.TypedTerm Paths.TermNode -> Typed.TypedTerm [Paths.TermLink]+termNodeLinks x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TermNode"),+ Core.projectionFieldName = (Core.Name "links")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the term field of hydra.paths.TermNode+termNodeTerm :: Typed.TypedTerm Paths.TermNode -> Typed.TypedTerm Core.Term+termNodeTerm x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TermNode"),+ Core.projectionFieldName = (Core.Name "term")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.paths.TermNode+termNodeTermNode :: Typed.TypedName Paths.TermNode+termNodeTermNode = Typed.TypedName (Core.Name "hydra.paths.TermNode")++-- | DSL accessor for the type field of hydra.paths.TermNode+termNodeType :: Typed.TypedTerm Paths.TermNode -> Typed.TypedTerm Core.Type+termNodeType x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TermNode"),+ Core.projectionFieldName = (Core.Name "type")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the links field of hydra.paths.TermNode+termNodeWithLinks :: Typed.TypedTerm Paths.TermNode -> Typed.TypedTerm [Paths.TermLink] -> Typed.TypedTerm Paths.TermNode+termNodeWithLinks original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TermNode"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "term"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TermNode"),+ Core.projectionFieldName = (Core.Name "term")})),+ 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.paths.TermNode"),+ Core.projectionFieldName = (Core.Name "type")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "links"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the term field of hydra.paths.TermNode+termNodeWithTerm :: Typed.TypedTerm Paths.TermNode -> Typed.TypedTerm Core.Term -> Typed.TypedTerm Paths.TermNode+termNodeWithTerm original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TermNode"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "term"),+ 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.paths.TermNode"),+ Core.projectionFieldName = (Core.Name "type")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "links"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TermNode"),+ Core.projectionFieldName = (Core.Name "links")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.paths.TermNode+termNodeWithType :: Typed.TypedTerm Paths.TermNode -> Typed.TypedTerm Core.Type -> Typed.TypedTerm Paths.TermNode+termNodeWithType original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TermNode"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "term"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TermNode"),+ Core.projectionFieldName = (Core.Name "term")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "type"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)},+ Core.Field {+ Core.fieldName = (Core.Name "links"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TermNode"),+ Core.projectionFieldName = (Core.Name "links")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the lambda variant of hydra.paths.TermReference+termReferenceLambda :: Typed.TypedTerm Paths.LambdaVariableReference -> Typed.TypedTerm Paths.TermReference+termReferenceLambda x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermReference"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "lambda"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the let variant of hydra.paths.TermReference+termReferenceLet :: Typed.TypedTerm Paths.LetVariableReference -> Typed.TypedTerm Paths.TermReference+termReferenceLet x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermReference"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "let"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.paths.TermReferenceLink+termReferenceLink :: Typed.TypedTerm Paths.SubtermStep -> Typed.TypedTerm Paths.TermReference -> Typed.TypedTerm Paths.TermReferenceLink+termReferenceLink step target =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TermReferenceLink"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "step"),+ Core.fieldTerm = (Typed.unTypedTerm step)},+ Core.Field {+ Core.fieldName = (Core.Name "target"),+ Core.fieldTerm = (Typed.unTypedTerm target)}]}))++-- | DSL accessor for the step field of hydra.paths.TermReferenceLink+termReferenceLinkStep :: Typed.TypedTerm Paths.TermReferenceLink -> Typed.TypedTerm Paths.SubtermStep+termReferenceLinkStep x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TermReferenceLink"),+ Core.projectionFieldName = (Core.Name "step")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the target field of hydra.paths.TermReferenceLink+termReferenceLinkTarget :: Typed.TypedTerm Paths.TermReferenceLink -> Typed.TypedTerm Paths.TermReference+termReferenceLinkTarget x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TermReferenceLink"),+ Core.projectionFieldName = (Core.Name "target")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.paths.TermReferenceLink+termReferenceLinkTermReferenceLink :: Typed.TypedName Paths.TermReferenceLink+termReferenceLinkTermReferenceLink = Typed.TypedName (Core.Name "hydra.paths.TermReferenceLink")++-- | DSL updater for the step field of hydra.paths.TermReferenceLink+termReferenceLinkWithStep :: Typed.TypedTerm Paths.TermReferenceLink -> Typed.TypedTerm Paths.SubtermStep -> Typed.TypedTerm Paths.TermReferenceLink+termReferenceLinkWithStep original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TermReferenceLink"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "step"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)},+ Core.Field {+ Core.fieldName = (Core.Name "target"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TermReferenceLink"),+ Core.projectionFieldName = (Core.Name "target")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the target field of hydra.paths.TermReferenceLink+termReferenceLinkWithTarget :: Typed.TypedTerm Paths.TermReferenceLink -> Typed.TypedTerm Paths.TermReference -> Typed.TypedTerm Paths.TermReferenceLink+termReferenceLinkWithTarget original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TermReferenceLink"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "step"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TermReferenceLink"),+ Core.projectionFieldName = (Core.Name "step")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "target"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the primitive variant of hydra.paths.TermReference+termReferencePrimitive :: Typed.TypedTerm Paths.PrimitiveReference -> Typed.TypedTerm Paths.TermReference+termReferencePrimitive x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermReference"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "primitive"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.paths.TermReference+termReferenceTermReference :: Typed.TypedName Paths.TermReference+termReferenceTermReference = Typed.TypedName (Core.Name "hydra.paths.TermReference")++-- | DSL injection for the annotatedAnnotation variant of hydra.paths.TypeAttributeLink+typeAttributeLinkAnnotatedAnnotation :: Typed.TypedTerm Core.Term -> Typed.TypedTerm Paths.TypeAttributeLink+typeAttributeLinkAnnotatedAnnotation x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TypeAttributeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "annotatedAnnotation"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the forallParameter variant of hydra.paths.TypeAttributeLink+typeAttributeLinkForallParameter :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TypeAttributeLink+typeAttributeLinkForallParameter x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TypeAttributeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "forallParameter"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the literal variant of hydra.paths.TypeAttributeLink+typeAttributeLinkLiteral :: Typed.TypedTerm Core.LiteralType -> Typed.TypedTerm Paths.TypeAttributeLink+typeAttributeLinkLiteral x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TypeAttributeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "literal"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.paths.TypeAttributeLink+typeAttributeLinkTypeAttributeLink :: Typed.TypedName Paths.TypeAttributeLink+typeAttributeLinkTypeAttributeLink = Typed.TypedName (Core.Name "hydra.paths.TypeAttributeLink")++-- | DSL constructor for hydra.paths.TypeGraph+typeGraph :: Typed.TypedTerm (M.Map Core.Name Paths.TypeNode) -> Typed.TypedTerm Paths.TypeGraph+typeGraph roots =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TypeGraph"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "roots"),+ Core.fieldTerm = (Typed.unTypedTerm roots)}]}))++-- | DSL accessor for the roots field of hydra.paths.TypeGraph+typeGraphRoots :: Typed.TypedTerm Paths.TypeGraph -> Typed.TypedTerm (M.Map Core.Name Paths.TypeNode)+typeGraphRoots x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TypeGraph"),+ Core.projectionFieldName = (Core.Name "roots")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.paths.TypeGraph+typeGraphTypeGraph :: Typed.TypedName Paths.TypeGraph+typeGraphTypeGraph = Typed.TypedName (Core.Name "hydra.paths.TypeGraph")++-- | DSL updater for the roots field of hydra.paths.TypeGraph+typeGraphWithRoots :: Typed.TypedTerm Paths.TypeGraph -> Typed.TypedTerm (M.Map Core.Name Paths.TypeNode) -> Typed.TypedTerm Paths.TypeGraph+typeGraphWithRoots original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TypeGraph"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "roots"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the attribute variant of hydra.paths.TypeLink+typeLinkAttribute :: Typed.TypedTerm Paths.TypeAttributeLink -> Typed.TypedTerm Paths.TypeLink+typeLinkAttribute x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TypeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "attribute"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the reference variant of hydra.paths.TypeLink+typeLinkReference :: Typed.TypedTerm Paths.TypeReferenceLink -> Typed.TypedTerm Paths.TypeLink+typeLinkReference x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TypeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "reference"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the subtype variant of hydra.paths.TypeLink+typeLinkSubtype :: Typed.TypedTerm Paths.SubtypeLink -> Typed.TypedTerm Paths.TypeLink+typeLinkSubtype x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TypeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "subtype"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.paths.TypeLink+typeLinkTypeLink :: Typed.TypedName Paths.TypeLink+typeLinkTypeLink = Typed.TypedName (Core.Name "hydra.paths.TypeLink")++-- | DSL constructor for hydra.paths.TypeNode+typeNode :: Typed.TypedTerm Core.Type -> Typed.TypedTerm [Paths.TypeLink] -> Typed.TypedTerm Paths.TypeNode+typeNode type_ links =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TypeNode"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "type"),+ Core.fieldTerm = (Typed.unTypedTerm type_)},+ Core.Field {+ Core.fieldName = (Core.Name "links"),+ Core.fieldTerm = (Typed.unTypedTerm links)}]}))++-- | DSL constructor for hydra.paths.TypeNodeId+typeNodeId :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.SubtypePath -> Typed.TypedTerm Paths.TypeNodeId+typeNodeId root path =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TypeNodeId"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "root"),+ Core.fieldTerm = (Typed.unTypedTerm root)},+ Core.Field {+ Core.fieldName = (Core.Name "path"),+ Core.fieldTerm = (Typed.unTypedTerm path)}]}))++-- | DSL accessor for the path field of hydra.paths.TypeNodeId+typeNodeIdPath :: Typed.TypedTerm Paths.TypeNodeId -> Typed.TypedTerm Paths.SubtypePath+typeNodeIdPath x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TypeNodeId"),+ Core.projectionFieldName = (Core.Name "path")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the root field of hydra.paths.TypeNodeId+typeNodeIdRoot :: Typed.TypedTerm Paths.TypeNodeId -> Typed.TypedTerm Core.Name+typeNodeIdRoot x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TypeNodeId"),+ Core.projectionFieldName = (Core.Name "root")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.paths.TypeNodeId+typeNodeIdTypeNodeId :: Typed.TypedName Paths.TypeNodeId+typeNodeIdTypeNodeId = Typed.TypedName (Core.Name "hydra.paths.TypeNodeId")++-- | DSL updater for the path field of hydra.paths.TypeNodeId+typeNodeIdWithPath :: Typed.TypedTerm Paths.TypeNodeId -> Typed.TypedTerm Paths.SubtypePath -> Typed.TypedTerm Paths.TypeNodeId+typeNodeIdWithPath original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TypeNodeId"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "root"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TypeNodeId"),+ Core.projectionFieldName = (Core.Name "root")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "path"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the root field of hydra.paths.TypeNodeId+typeNodeIdWithRoot :: Typed.TypedTerm Paths.TypeNodeId -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TypeNodeId+typeNodeIdWithRoot original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TypeNodeId"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "root"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)},+ Core.Field {+ Core.fieldName = (Core.Name "path"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TypeNodeId"),+ Core.projectionFieldName = (Core.Name "path")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL accessor for the links field of hydra.paths.TypeNode+typeNodeLinks :: Typed.TypedTerm Paths.TypeNode -> Typed.TypedTerm [Paths.TypeLink]+typeNodeLinks x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TypeNode"),+ Core.projectionFieldName = (Core.Name "links")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.paths.TypeNode+typeNodeType :: Typed.TypedTerm Paths.TypeNode -> Typed.TypedTerm Core.Type+typeNodeType x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TypeNode"),+ Core.projectionFieldName = (Core.Name "type")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.paths.TypeNode+typeNodeTypeNode :: Typed.TypedName Paths.TypeNode+typeNodeTypeNode = Typed.TypedName (Core.Name "hydra.paths.TypeNode")++-- | DSL updater for the links field of hydra.paths.TypeNode+typeNodeWithLinks :: Typed.TypedTerm Paths.TypeNode -> Typed.TypedTerm [Paths.TypeLink] -> Typed.TypedTerm Paths.TypeNode+typeNodeWithLinks original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TypeNode"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "type"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TypeNode"),+ Core.projectionFieldName = (Core.Name "type")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "links"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the type field of hydra.paths.TypeNode+typeNodeWithType :: Typed.TypedTerm Paths.TypeNode -> Typed.TypedTerm Core.Type -> Typed.TypedTerm Paths.TypeNode+typeNodeWithType original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TypeNode"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "type"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)},+ Core.Field {+ Core.fieldName = (Core.Name "links"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TypeNode"),+ Core.projectionFieldName = (Core.Name "links")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.paths.TypeReferenceLink+typeReferenceLink :: Typed.TypedTerm Paths.SubtypeStep -> Typed.TypedTerm Paths.TypeReference -> Typed.TypedTerm Paths.TypeReferenceLink+typeReferenceLink step target =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TypeReferenceLink"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "step"),+ Core.fieldTerm = (Typed.unTypedTerm step)},+ Core.Field {+ Core.fieldName = (Core.Name "target"),+ Core.fieldTerm = (Typed.unTypedTerm target)}]}))++-- | DSL accessor for the step field of hydra.paths.TypeReferenceLink+typeReferenceLinkStep :: Typed.TypedTerm Paths.TypeReferenceLink -> Typed.TypedTerm Paths.SubtypeStep+typeReferenceLinkStep x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TypeReferenceLink"),+ Core.projectionFieldName = (Core.Name "step")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the target field of hydra.paths.TypeReferenceLink+typeReferenceLinkTarget :: Typed.TypedTerm Paths.TypeReferenceLink -> Typed.TypedTerm Paths.TypeReference+typeReferenceLinkTarget x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TypeReferenceLink"),+ Core.projectionFieldName = (Core.Name "target")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.paths.TypeReferenceLink+typeReferenceLinkTypeReferenceLink :: Typed.TypedName Paths.TypeReferenceLink+typeReferenceLinkTypeReferenceLink = Typed.TypedName (Core.Name "hydra.paths.TypeReferenceLink")++-- | DSL updater for the step field of hydra.paths.TypeReferenceLink+typeReferenceLinkWithStep :: Typed.TypedTerm Paths.TypeReferenceLink -> Typed.TypedTerm Paths.SubtypeStep -> Typed.TypedTerm Paths.TypeReferenceLink+typeReferenceLinkWithStep original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TypeReferenceLink"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "step"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)},+ Core.Field {+ Core.fieldName = (Core.Name "target"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TypeReferenceLink"),+ Core.projectionFieldName = (Core.Name "target")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the target field of hydra.paths.TypeReferenceLink+typeReferenceLinkWithTarget :: Typed.TypedTerm Paths.TypeReferenceLink -> Typed.TypedTerm Paths.TypeReference -> Typed.TypedTerm Paths.TypeReferenceLink+typeReferenceLinkWithTarget original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TypeReferenceLink"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "step"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TypeReferenceLink"),+ Core.projectionFieldName = (Core.Name "step")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "target"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the nominal variant of hydra.paths.TypeReference+typeReferenceNominal :: Typed.TypedTerm Paths.NominalTypeReference -> Typed.TypedTerm Paths.TypeReference+typeReferenceNominal x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TypeReference"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "nominal"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.paths.TypeReference+typeReferenceTypeReference :: Typed.TypedName Paths.TypeReference+typeReferenceTypeReference = Typed.TypedName (Core.Name "hydra.paths.TypeReference")++-- | DSL injection for the variable variant of hydra.paths.TypeReference+typeReferenceVariable :: Typed.TypedTerm Paths.TypeVariableReference -> Typed.TypedTerm Paths.TypeReference+typeReferenceVariable x =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TypeReference"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "variable"),+ Core.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.paths.TypeVariableReference+typeVariableReference :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TypeNodeId -> Typed.TypedTerm Paths.TypeVariableReference+typeVariableReference variable boundByNode =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TypeVariableReference"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "variable"),+ Core.fieldTerm = (Typed.unTypedTerm variable)},+ Core.Field {+ Core.fieldName = (Core.Name "boundByNode"),+ Core.fieldTerm = (Typed.unTypedTerm boundByNode)}]}))++-- | DSL accessor for the boundByNode field of hydra.paths.TypeVariableReference+typeVariableReferenceBoundByNode :: Typed.TypedTerm Paths.TypeVariableReference -> Typed.TypedTerm Paths.TypeNodeId+typeVariableReferenceBoundByNode x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TypeVariableReference"),+ Core.projectionFieldName = (Core.Name "boundByNode")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.paths.TypeVariableReference+typeVariableReferenceTypeVariableReference :: Typed.TypedName Paths.TypeVariableReference+typeVariableReferenceTypeVariableReference = Typed.TypedName (Core.Name "hydra.paths.TypeVariableReference")++-- | DSL accessor for the variable field of hydra.paths.TypeVariableReference+typeVariableReferenceVariable :: Typed.TypedTerm Paths.TypeVariableReference -> Typed.TypedTerm Core.Name+typeVariableReferenceVariable x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TypeVariableReference"),+ Core.projectionFieldName = (Core.Name "variable")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the boundByNode field of hydra.paths.TypeVariableReference+typeVariableReferenceWithBoundByNode :: Typed.TypedTerm Paths.TypeVariableReference -> Typed.TypedTerm Paths.TypeNodeId -> Typed.TypedTerm Paths.TypeVariableReference+typeVariableReferenceWithBoundByNode original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TypeVariableReference"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "variable"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TypeVariableReference"),+ Core.projectionFieldName = (Core.Name "variable")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "boundByNode"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the variable field of hydra.paths.TypeVariableReference+typeVariableReferenceWithVariable :: Typed.TypedTerm Paths.TypeVariableReference -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Paths.TypeVariableReference+typeVariableReferenceWithVariable original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TypeVariableReference"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "variable"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)},+ Core.Field {+ Core.fieldName = (Core.Name "boundByNode"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.paths.TypeVariableReference"),+ Core.projectionFieldName = (Core.Name "boundByNode")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))}]})) -- | DSL accessor for the body of hydra.paths.SubtermPath unSubtermPath :: Typed.TypedTerm Paths.SubtermPath -> Typed.TypedTerm [Paths.SubtermStep]
src/main/haskell/Hydra/Dsl/Testing.hs view
@@ -117,8 +117,8 @@ Core.fieldTerm = (Typed.unTypedTerm x)}})) -- | DSL constructor for hydra.testing.TestCaseWithMetadata-testCaseWithMetadata :: Typed.TypedTerm String -> Typed.TypedTerm Testing.TestCase -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm [Testing.Tag] -> Typed.TypedTerm Testing.TestCaseWithMetadata-testCaseWithMetadata name case_ description tags =+testCaseWithMetadata :: Typed.TypedTerm String -> Typed.TypedTerm Testing.TestCase -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm [Testing.Tag] -> Typed.TypedTerm [Core.Name] -> Typed.TypedTerm Testing.TestCaseWithMetadata+testCaseWithMetadata name case_ description tags provisions = Typed.TypedTerm (Core.TermRecord (Core.Record { Core.recordTypeName = (Core.Name "hydra.testing.TestCaseWithMetadata"), Core.recordFields = [@@ -133,7 +133,10 @@ Core.fieldTerm = (Typed.unTypedTerm description)}, Core.Field { Core.fieldName = (Core.Name "tags"),- Core.fieldTerm = (Typed.unTypedTerm tags)}]}))+ Core.fieldTerm = (Typed.unTypedTerm tags)},+ Core.Field {+ Core.fieldName = (Core.Name "provisions"),+ Core.fieldTerm = (Typed.unTypedTerm provisions)}]})) -- | DSL accessor for the case field of hydra.testing.TestCaseWithMetadata testCaseWithMetadataCase :: Typed.TypedTerm Testing.TestCaseWithMetadata -> Typed.TypedTerm Testing.TestCase@@ -162,6 +165,15 @@ Core.projectionFieldName = (Core.Name "name")})), Core.applicationArgument = (Typed.unTypedTerm x)})) +-- | DSL accessor for the provisions field of hydra.testing.TestCaseWithMetadata+testCaseWithMetadataProvisions :: Typed.TypedTerm Testing.TestCaseWithMetadata -> Typed.TypedTerm [Core.Name]+testCaseWithMetadataProvisions x =+ Typed.TypedTerm (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.testing.TestCaseWithMetadata"),+ Core.projectionFieldName = (Core.Name "provisions")})),+ Core.applicationArgument = (Typed.unTypedTerm x)}))+ -- | DSL accessor for the tags field of hydra.testing.TestCaseWithMetadata testCaseWithMetadataTags :: Typed.TypedTerm Testing.TestCaseWithMetadata -> Typed.TypedTerm [Testing.Tag] testCaseWithMetadataTags x =@@ -204,6 +216,13 @@ Core.applicationFunction = (Core.TermProject (Core.Projection { Core.projectionTypeName = (Core.Name "hydra.testing.TestCaseWithMetadata"), Core.projectionFieldName = (Core.Name "tags")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "provisions"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.testing.TestCaseWithMetadata"),+ Core.projectionFieldName = (Core.Name "provisions")})), Core.applicationArgument = (Typed.unTypedTerm original)}))}]})) -- | DSL updater for the description field of hydra.testing.TestCaseWithMetadata@@ -235,6 +254,13 @@ Core.applicationFunction = (Core.TermProject (Core.Projection { Core.projectionTypeName = (Core.Name "hydra.testing.TestCaseWithMetadata"), Core.projectionFieldName = (Core.Name "tags")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "provisions"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.testing.TestCaseWithMetadata"),+ Core.projectionFieldName = (Core.Name "provisions")})), Core.applicationArgument = (Typed.unTypedTerm original)}))}]})) -- | DSL updater for the name field of hydra.testing.TestCaseWithMetadata@@ -266,8 +292,53 @@ Core.applicationFunction = (Core.TermProject (Core.Projection { Core.projectionTypeName = (Core.Name "hydra.testing.TestCaseWithMetadata"), Core.projectionFieldName = (Core.Name "tags")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "provisions"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.testing.TestCaseWithMetadata"),+ Core.projectionFieldName = (Core.Name "provisions")})), Core.applicationArgument = (Typed.unTypedTerm original)}))}]})) +-- | DSL updater for the provisions field of hydra.testing.TestCaseWithMetadata+testCaseWithMetadataWithProvisions :: Typed.TypedTerm Testing.TestCaseWithMetadata -> Typed.TypedTerm [Core.Name] -> Typed.TypedTerm Testing.TestCaseWithMetadata+testCaseWithMetadataWithProvisions original newVal =+ Typed.TypedTerm (Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.testing.TestCaseWithMetadata"),+ 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.testing.TestCaseWithMetadata"),+ Core.projectionFieldName = (Core.Name "name")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "case"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.testing.TestCaseWithMetadata"),+ Core.projectionFieldName = (Core.Name "case")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "description"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.testing.TestCaseWithMetadata"),+ Core.projectionFieldName = (Core.Name "description")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "tags"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.testing.TestCaseWithMetadata"),+ Core.projectionFieldName = (Core.Name "tags")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))},+ Core.Field {+ Core.fieldName = (Core.Name "provisions"),+ Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))+ -- | DSL updater for the tags field of hydra.testing.TestCaseWithMetadata testCaseWithMetadataWithTags :: Typed.TypedTerm Testing.TestCaseWithMetadata -> Typed.TypedTerm [Testing.Tag] -> Typed.TypedTerm Testing.TestCaseWithMetadata testCaseWithMetadataWithTags original newVal =@@ -297,7 +368,14 @@ Core.applicationArgument = (Typed.unTypedTerm original)}))}, Core.Field { Core.fieldName = (Core.Name "tags"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))+ Core.fieldTerm = (Typed.unTypedTerm newVal)},+ Core.Field {+ Core.fieldName = (Core.Name "provisions"),+ Core.fieldTerm = (Core.TermApplication (Core.Application {+ Core.applicationFunction = (Core.TermProject (Core.Projection {+ Core.projectionTypeName = (Core.Name "hydra.testing.TestCaseWithMetadata"),+ Core.projectionFieldName = (Core.Name "provisions")})),+ Core.applicationArgument = (Typed.unTypedTerm original)}))}]})) -- | DSL constructor for hydra.testing.TestGroup testGroup :: Typed.TypedTerm String -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm [Testing.TestGroup] -> Typed.TypedTerm [Testing.TestCaseWithMetadata] -> Typed.TypedTerm Testing.TestGroup
src/main/haskell/Hydra/Dsl/Util.hs view
@@ -50,6 +50,15 @@ Core.fieldName = (Core.Name "pascal"), Core.fieldTerm = Core.TermUnit}})) +-- | DSL injection for the upperDashed variant of hydra.util.CaseConvention+caseConventionUpperDashed :: Typed.TypedTerm Util.CaseConvention+caseConventionUpperDashed =+ Typed.TypedTerm (Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.util.CaseConvention"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "upperDashed"),+ Core.fieldTerm = Core.TermUnit}}))+ -- | DSL injection for the upperSnake variant of hydra.util.CaseConvention caseConventionUpperSnake :: Typed.TypedTerm Util.CaseConvention caseConventionUpperSnake =
src/main/haskell/Hydra/Dsls.hs view
@@ -119,7 +119,8 @@ (Packaging.unModuleName (Packaging.moduleName mod))])), Packaging.entityMetadataComments = [], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.moduleDependencies = (Lists.map (\ns -> Packaging.ModuleDependency { Packaging.moduleDependencyModule = ns, Packaging.moduleDependencyPackage = Nothing}) (Lists.distinct (Lists.concat2 [
src/main/haskell/Hydra/Encode/Error/Packaging.hs view
@@ -187,6 +187,16 @@ Core.injectionField = Core.Field { Core.fieldName = (Core.Name "invalidPackageName"), Core.fieldTerm = (invalidPackageNameError v0)}})+ ErrorPackaging.InvalidPackageErrorModuleInMultiplePackages v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.error.packaging.InvalidPackageError"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "moduleInMultiplePackages"),+ Core.fieldTerm = (moduleInMultiplePackagesError v0)}})+ ErrorPackaging.InvalidPackageErrorNestedModuleName v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.error.packaging.InvalidPackageError"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "nestedModuleName"),+ Core.fieldTerm = (nestedModuleNameError v0)}}) ErrorPackaging.InvalidPackageErrorUndeclaredDependency v0 -> Core.TermInject (Core.Injection { Core.injectionTypeName = (Core.Name "hydra.error.packaging.InvalidPackageError"), Core.injectionField = Core.Field {@@ -215,6 +225,35 @@ Core.Field { Core.fieldName = (Core.Name "name"), Core.fieldTerm = (EncodeCore.name (ErrorPackaging.missingDocumentationErrorName x))}]})++-- | Encoder for hydra.error.packaging.ModuleInMultiplePackagesError+moduleInMultiplePackagesError :: ErrorPackaging.ModuleInMultiplePackagesError -> Core.Term+moduleInMultiplePackagesError x =+ Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.error.packaging.ModuleInMultiplePackagesError"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "moduleName"),+ Core.fieldTerm = (EncodePackaging.moduleName (ErrorPackaging.moduleInMultiplePackagesErrorModuleName x))},+ Core.Field {+ Core.fieldName = (Core.Name "firstPackage"),+ Core.fieldTerm = (EncodePackaging.packageName (ErrorPackaging.moduleInMultiplePackagesErrorFirstPackage x))},+ Core.Field {+ Core.fieldName = (Core.Name "secondPackage"),+ Core.fieldTerm = (EncodePackaging.packageName (ErrorPackaging.moduleInMultiplePackagesErrorSecondPackage x))}]})++-- | Encoder for hydra.error.packaging.NestedModuleNameError+nestedModuleNameError :: ErrorPackaging.NestedModuleNameError -> Core.Term+nestedModuleNameError x =+ Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.error.packaging.NestedModuleNameError"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "outer"),+ Core.fieldTerm = (EncodePackaging.moduleName (ErrorPackaging.nestedModuleNameErrorOuter x))},+ Core.Field {+ Core.fieldName = (Core.Name "inner"),+ Core.fieldTerm = (EncodePackaging.moduleName (ErrorPackaging.nestedModuleNameErrorInner x))}]}) -- | Encoder for hydra.error.packaging.UndeclaredDependencyError undeclaredDependencyError :: ErrorPackaging.UndeclaredDependencyError -> Core.Term
src/main/haskell/Hydra/Encode/Packaging.hs view
@@ -96,7 +96,10 @@ Core.fieldTerm = ((\xs -> Core.TermList (Lists.map entityReference xs)) (Packaging.entityMetadataSeeAlso x))}, Core.Field { Core.fieldName = (Core.Name "lifecycle"),- Core.fieldTerm = ((\opt -> Core.TermOptional (Optionals.map lifecycleInfo opt)) (Packaging.entityMetadataLifecycle x))}]})+ Core.fieldTerm = ((\opt -> Core.TermOptional (Optionals.map lifecycleInfo opt)) (Packaging.entityMetadataLifecycle x))},+ Core.Field {+ Core.fieldName = (Core.Name "provisions"),+ Core.fieldTerm = ((\xs -> Core.TermList (Lists.map provision xs)) (Packaging.entityMetadataProvisions x))}]}) -- | Encoder for hydra.packaging.EntityReference entityReference :: Packaging.EntityReference -> Core.Term@@ -246,6 +249,37 @@ Core.Field { Core.fieldName = (Core.Name "defaultImplementation"), Core.fieldTerm = ((\opt -> Core.TermOptional (Optionals.map EncodeCore.term opt)) (Packaging.primitiveDefinitionDefaultImplementation x))}]})++-- | Encoder for hydra.packaging.Provision+provision :: Packaging.Provision -> Core.Term+provision x =+ Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.packaging.Provision"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "name"),+ Core.fieldTerm = (EncodeCore.name (Packaging.provisionName x))},+ Core.Field {+ Core.fieldName = (Core.Name "kind"),+ Core.fieldTerm = (provisionKind (Packaging.provisionKind x))},+ Core.Field {+ Core.fieldName = (Core.Name "statement"),+ Core.fieldTerm = ((\x2 -> Core.TermLiteral (Core.LiteralString x2)) (Packaging.provisionStatement x))}]})++-- | Encoder for hydra.packaging.ProvisionKind+provisionKind :: Packaging.ProvisionKind -> Core.Term+provisionKind x =+ case x of+ Packaging.ProvisionKindRequirement -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.packaging.ProvisionKind"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "requirement"),+ Core.fieldTerm = Core.TermUnit}})+ Packaging.ProvisionKindRecommendation -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.packaging.ProvisionKind"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "recommendation"),+ Core.fieldTerm = Core.TermUnit}}) -- | Encoder for hydra.packaging.TermDefinition termDefinition :: Packaging.TermDefinition -> Core.Term
src/main/haskell/Hydra/Encode/Paths.hs view
@@ -7,83 +7,80 @@ import qualified Hydra.Core as Core import qualified Hydra.Encode.Core as EncodeCore import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists+import qualified Hydra.Overlay.Haskell.Lib.Maps as Maps import qualified Hydra.Overlay.Haskell.Lib.Pairs as Pairs import qualified Hydra.Paths as Paths import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import Data.Void --- | Encoder for hydra.paths.SubtermAttribute-subtermAttribute :: Paths.SubtermAttribute -> Core.Term-subtermAttribute x =+-- | Encoder for hydra.paths.LambdaVariableReference+lambdaVariableReference :: Paths.LambdaVariableReference -> Core.Term+lambdaVariableReference x = Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtermAttribute"),+ Core.recordTypeName = (Core.Name "hydra.paths.LambdaVariableReference"), Core.recordFields = [ Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (subtermPath (Paths.subtermAttributePath x))},+ Core.fieldName = (Core.Name "variable"),+ Core.fieldTerm = (EncodeCore.name (Paths.lambdaVariableReferenceVariable x))}, Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (termAttribute (Paths.subtermAttributeTarget x))}]})+ Core.fieldName = (Core.Name "boundByNode"),+ Core.fieldTerm = (termNodeId (Paths.lambdaVariableReferenceBoundByNode x))},+ Core.Field {+ Core.fieldName = (Core.Name "type"),+ Core.fieldTerm = (EncodeCore.type_ (Paths.lambdaVariableReferenceType x))}]}) --- | Encoder for hydra.paths.SubtermEdge-subtermEdge :: Paths.SubtermEdge -> Core.Term-subtermEdge x =+-- | Encoder for hydra.paths.LetVariableReference+letVariableReference :: Paths.LetVariableReference -> Core.Term+letVariableReference x = Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtermEdge"),+ Core.recordTypeName = (Core.Name "hydra.paths.LetVariableReference"), Core.recordFields = [ Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (subtermPath (Paths.subtermEdgePath x))},+ Core.fieldName = (Core.Name "variable"),+ Core.fieldTerm = (EncodeCore.name (Paths.letVariableReferenceVariable x))}, Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (EncodeCore.name (Paths.subtermEdgeTarget x))}]})+ Core.fieldName = (Core.Name "bindingNode"),+ Core.fieldTerm = (termNodeId (Paths.letVariableReferenceBindingNode x))},+ Core.Field {+ Core.fieldName = (Core.Name "type"),+ Core.fieldTerm = (EncodeCore.type_ (Paths.letVariableReferenceType x))}]}) --- | Encoder for hydra.paths.SubtermGraph-subtermGraph :: Paths.SubtermGraph -> Core.Term-subtermGraph x =+-- | Encoder for hydra.paths.NominalTypeReference+nominalTypeReference :: Paths.NominalTypeReference -> Core.Term+nominalTypeReference x = Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtermGraph"),+ Core.recordTypeName = (Core.Name "hydra.paths.NominalTypeReference"), Core.recordFields = [ Core.Field {- Core.fieldName = (Core.Name "nodes"),- Core.fieldTerm = ((\xs -> Core.TermList (Lists.map subtermNode xs)) (Paths.subtermGraphNodes x))}]})---- | Encoder for hydra.paths.SubtermLink-subtermLink :: Paths.SubtermLink -> Core.Term-subtermLink x =- case x of- Paths.SubtermLinkEdge v0 -> Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermLink"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "edge"),- Core.fieldTerm = (subtermEdge v0)}})- Paths.SubtermLinkProperty v0 -> Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermLink"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "property"),- Core.fieldTerm = (subtermProperty v0)}})- Paths.SubtermLinkAttribute v0 -> Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermLink"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "attribute"),- Core.fieldTerm = (subtermAttribute v0)}})+ Core.fieldName = (Core.Name "name"),+ Core.fieldTerm = (EncodeCore.name (Paths.nominalTypeReferenceName x))}]}) --- | Encoder for hydra.paths.SubtermNode-subtermNode :: Paths.SubtermNode -> Core.Term-subtermNode x =+-- | Encoder for hydra.paths.PrimitiveReference+primitiveReference :: Paths.PrimitiveReference -> Core.Term+primitiveReference x = Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtermNode"),+ Core.recordTypeName = (Core.Name "hydra.paths.PrimitiveReference"), Core.recordFields = [ Core.Field { Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (EncodeCore.name (Paths.subtermNodeName x))},+ Core.fieldTerm = (EncodeCore.name (Paths.primitiveReferenceName x))}, Core.Field { Core.fieldName = (Core.Name "type"),- Core.fieldTerm = (EncodeCore.typeScheme (Paths.subtermNodeType x))},+ Core.fieldTerm = (EncodeCore.type_ (Paths.primitiveReferenceType x))}]})++-- | Encoder for hydra.paths.SubtermLink+subtermLink :: Paths.SubtermLink -> Core.Term+subtermLink x =+ Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.SubtermLink"),+ Core.recordFields = [ Core.Field {- Core.fieldName = (Core.Name "links"),- Core.fieldTerm = ((\xs -> Core.TermList (Lists.map subtermLink xs)) (Paths.subtermNodeLinks x))}]})+ Core.fieldName = (Core.Name "step"),+ Core.fieldTerm = (subtermStep (Paths.subtermLinkStep x))},+ Core.Field {+ Core.fieldName = (Core.Name "child"),+ Core.fieldTerm = (termNode (Paths.subtermLinkChild x))}]}) -- | Encoder for hydra.paths.SubtermPath subtermPath :: Paths.SubtermPath -> Core.Term@@ -92,19 +89,6 @@ Core.wrappedTermTypeName = (Core.Name "hydra.paths.SubtermPath"), Core.wrappedTermBody = ((\xs -> Core.TermList (Lists.map subtermStep xs)) (Paths.unSubtermPath x))}) --- | Encoder for hydra.paths.SubtermProperty-subtermProperty :: Paths.SubtermProperty -> Core.Term-subtermProperty x =- Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtermProperty"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (subtermPath (Paths.subtermPropertyPath x))},- Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (EncodeCore.term (Paths.subtermPropertyTarget x))}]})- -- | Encoder for hydra.paths.SubtermStep subtermStep :: Paths.SubtermStep -> Core.Term subtermStep x =@@ -174,15 +158,10 @@ Core.injectionField = Core.Field { Core.fieldName = (Core.Name "listElement"), Core.fieldTerm = (Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 v0)))}})- Paths.SubtermStepMapKey v0 -> Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "mapKey"),- Core.fieldTerm = (Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 v0)))}})- Paths.SubtermStepMapValue v0 -> Core.TermInject (Core.Injection {+ Paths.SubtermStepMapEntry v0 -> Core.TermInject (Core.Injection { Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"), Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "mapValue"),+ Core.fieldName = (Core.Name "mapEntry"), Core.fieldTerm = (Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 v0)))}}) Paths.SubtermStepOptionalGiven -> Core.TermInject (Core.Injection { Core.injectionTypeName = (Core.Name "hydra.paths.SubtermStep"),@@ -225,74 +204,18 @@ Core.fieldName = (Core.Name "wrapBody"), Core.fieldTerm = Core.TermUnit}}) --- | Encoder for hydra.paths.SubtypeAttribute-subtypeAttribute :: Paths.SubtypeAttribute -> Core.Term-subtypeAttribute x =- Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtypeAttribute"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (subtypePath (Paths.subtypeAttributePath x))},- Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (typeAttribute (Paths.subtypeAttributeTarget x))}]})---- | Encoder for hydra.paths.SubtypeEdge-subtypeEdge :: Paths.SubtypeEdge -> Core.Term-subtypeEdge x =- Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtypeEdge"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (subtypePath (Paths.subtypeEdgePath x))},- Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (EncodeCore.name (Paths.subtypeEdgeTarget x))}]})---- | Encoder for hydra.paths.SubtypeGraph-subtypeGraph :: Paths.SubtypeGraph -> Core.Term-subtypeGraph x =- Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtypeGraph"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "nodes"),- Core.fieldTerm = ((\xs -> Core.TermList (Lists.map subtypeNode xs)) (Paths.subtypeGraphNodes x))}]})- -- | Encoder for hydra.paths.SubtypeLink subtypeLink :: Paths.SubtypeLink -> Core.Term subtypeLink x =- case x of- Paths.SubtypeLinkEdge v0 -> Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeLink"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "edge"),- Core.fieldTerm = (subtypeEdge v0)}})- Paths.SubtypeLinkProperty v0 -> Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeLink"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "property"),- Core.fieldTerm = (subtypeProperty v0)}})- Paths.SubtypeLinkAttribute v0 -> Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.SubtypeLink"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "attribute"),- Core.fieldTerm = (subtypeAttribute v0)}})---- | Encoder for hydra.paths.SubtypeNode-subtypeNode :: Paths.SubtypeNode -> Core.Term-subtypeNode x = Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtypeNode"),+ Core.recordTypeName = (Core.Name "hydra.paths.SubtypeLink"), Core.recordFields = [ Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (EncodeCore.name (Paths.subtypeNodeName x))},+ Core.fieldName = (Core.Name "step"),+ Core.fieldTerm = (subtypeStep (Paths.subtypeLinkStep x))}, Core.Field {- Core.fieldName = (Core.Name "links"),- Core.fieldTerm = ((\xs -> Core.TermList (Lists.map subtypeLink xs)) (Paths.subtypeNodeLinks x))}]})+ Core.fieldName = (Core.Name "child"),+ Core.fieldTerm = (typeNode (Paths.subtypeLinkChild x))}]}) -- | Encoder for hydra.paths.SubtypePath subtypePath :: Paths.SubtypePath -> Core.Term@@ -301,19 +224,6 @@ Core.wrappedTermTypeName = (Core.Name "hydra.paths.SubtypePath"), Core.wrappedTermBody = ((\xs -> Core.TermList (Lists.map subtypeStep xs)) (Paths.unSubtypePath x))}) --- | Encoder for hydra.paths.SubtypeProperty-subtypeProperty :: Paths.SubtypeProperty -> Core.Term-subtypeProperty x =- Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.paths.SubtypeProperty"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "path"),- Core.fieldTerm = (subtypePath (Paths.subtypePropertyPath x))},- Core.Field {- Core.fieldName = (Core.Name "target"),- Core.fieldTerm = (EncodeCore.type_ (Paths.subtypePropertyTarget x))}]})- -- | Encoder for hydra.paths.SubtypeStep subtypeStep :: Paths.SubtypeStep -> Core.Term subtypeStep x =@@ -414,77 +324,281 @@ Core.fieldName = (Core.Name "wrapBody"), Core.fieldTerm = Core.TermUnit}}) --- | Encoder for hydra.paths.TermAttribute-termAttribute :: Paths.TermAttribute -> Core.Term-termAttribute x =+-- | Encoder for hydra.paths.TermAttributeLink+termAttributeLink :: Paths.TermAttributeLink -> Core.Term+termAttributeLink x = case x of- Paths.TermAttributeCasesTypeName v0 -> Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TermAttribute"),+ Paths.TermAttributeLinkCasesTypeName v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"), Core.injectionField = Core.Field { Core.fieldName = (Core.Name "casesTypeName"), Core.fieldTerm = (EncodeCore.name v0)}})- Paths.TermAttributeInjectTypeName v0 -> Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TermAttribute"),+ Paths.TermAttributeLinkInjectTypeName v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"), Core.injectionField = Core.Field { Core.fieldName = (Core.Name "injectTypeName"), Core.fieldTerm = (EncodeCore.name v0)}})- Paths.TermAttributeLambdaDomainGiven v0 -> Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TermAttribute"),+ Paths.TermAttributeLinkLambdaDomainGiven v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"), Core.injectionField = Core.Field { Core.fieldName = (Core.Name "lambdaDomainGiven"), Core.fieldTerm = (EncodeCore.type_ v0)}})- Paths.TermAttributeLambdaParameter v0 -> Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TermAttribute"),+ Paths.TermAttributeLinkLambdaParameter v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"), Core.injectionField = Core.Field { Core.fieldName = (Core.Name "lambdaParameter"), Core.fieldTerm = (EncodeCore.name v0)}})- Paths.TermAttributeLetBindingTypeSchemeGiven v0 -> Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TermAttribute"),+ Paths.TermAttributeLinkLetBindingTypeSchemeGiven v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"), Core.injectionField = Core.Field { Core.fieldName = (Core.Name "letBindingTypeSchemeGiven"), Core.fieldTerm = (Core.TermPair (Pairs.bimap EncodeCore.name EncodeCore.typeScheme v0))}})- Paths.TermAttributeProjectFieldName v0 -> Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TermAttribute"),+ Paths.TermAttributeLinkLiteral v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"), Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "literal"),+ Core.fieldTerm = (EncodeCore.literal v0)}})+ Paths.TermAttributeLinkProjectFieldName v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"),+ Core.injectionField = Core.Field { Core.fieldName = (Core.Name "projectFieldName"), Core.fieldTerm = (EncodeCore.name v0)}})- Paths.TermAttributeProjectTypeName v0 -> Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TermAttribute"),+ Paths.TermAttributeLinkProjectTypeName v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"), Core.injectionField = Core.Field { Core.fieldName = (Core.Name "projectTypeName"), Core.fieldTerm = (EncodeCore.name v0)}})- Paths.TermAttributeRecordTypeName v0 -> Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TermAttribute"),+ Paths.TermAttributeLinkRecordTypeName v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"), Core.injectionField = Core.Field { Core.fieldName = (Core.Name "recordTypeName"), Core.fieldTerm = (EncodeCore.name v0)}})- Paths.TermAttributeTypeApplicationType v0 -> Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TermAttribute"),+ Paths.TermAttributeLinkTypeApplicationType v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"), Core.injectionField = Core.Field { Core.fieldName = (Core.Name "typeApplicationType"), Core.fieldTerm = (EncodeCore.type_ v0)}})- Paths.TermAttributeTypeLambdaParameter v0 -> Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TermAttribute"),+ Paths.TermAttributeLinkTypeLambdaParameter v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"), Core.injectionField = Core.Field { Core.fieldName = (Core.Name "typeLambdaParameter"), Core.fieldTerm = (EncodeCore.name v0)}})- Paths.TermAttributeWrapTypeName v0 -> Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TermAttribute"),+ Paths.TermAttributeLinkUnwrapTypeName v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"), Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "unwrapTypeName"),+ Core.fieldTerm = (EncodeCore.name v0)}})+ Paths.TermAttributeLinkWrapTypeName v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermAttributeLink"),+ Core.injectionField = Core.Field { Core.fieldName = (Core.Name "wrapTypeName"), Core.fieldTerm = (EncodeCore.name v0)}}) --- | Encoder for hydra.paths.TypeAttribute-typeAttribute :: Paths.TypeAttribute -> Core.Term-typeAttribute x =+-- | Encoder for hydra.paths.TermGraph+termGraph :: Paths.TermGraph -> Core.Term+termGraph x =+ Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TermGraph"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "roots"),+ Core.fieldTerm = ((\m -> Core.TermMap (Maps.bimap EncodeCore.name termNode m)) (Paths.termGraphRoots x))}]})++-- | Encoder for hydra.paths.TermLink+termLink :: Paths.TermLink -> Core.Term+termLink x = case x of- Paths.TypeAttributeAnnotatedAnnotation v0 -> Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TypeAttribute"),+ Paths.TermLinkAttribute v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermLink"), Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "attribute"),+ Core.fieldTerm = (termAttributeLink v0)}})+ Paths.TermLinkReference v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "reference"),+ Core.fieldTerm = (termReferenceLink v0)}})+ Paths.TermLinkSubterm v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "subterm"),+ Core.fieldTerm = (subtermLink v0)}})++-- | Encoder for hydra.paths.TermNode+termNode :: Paths.TermNode -> Core.Term+termNode x =+ Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TermNode"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "term"),+ Core.fieldTerm = (EncodeCore.term (Paths.termNodeTerm x))},+ Core.Field {+ Core.fieldName = (Core.Name "type"),+ Core.fieldTerm = (EncodeCore.type_ (Paths.termNodeType x))},+ Core.Field {+ Core.fieldName = (Core.Name "links"),+ Core.fieldTerm = ((\xs -> Core.TermList (Lists.map termLink xs)) (Paths.termNodeLinks x))}]})++-- | Encoder for hydra.paths.TermNodeId+termNodeId :: Paths.TermNodeId -> Core.Term+termNodeId x =+ Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TermNodeId"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "root"),+ Core.fieldTerm = (EncodeCore.name (Paths.termNodeIdRoot x))},+ Core.Field {+ Core.fieldName = (Core.Name "path"),+ Core.fieldTerm = (subtermPath (Paths.termNodeIdPath x))}]})++-- | Encoder for hydra.paths.TermReference+termReference :: Paths.TermReference -> Core.Term+termReference x =+ case x of+ Paths.TermReferenceLambda v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermReference"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "lambda"),+ Core.fieldTerm = (lambdaVariableReference v0)}})+ Paths.TermReferenceLet v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermReference"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "let"),+ Core.fieldTerm = (letVariableReference v0)}})+ Paths.TermReferencePrimitive v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TermReference"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "primitive"),+ Core.fieldTerm = (primitiveReference v0)}})++-- | Encoder for hydra.paths.TermReferenceLink+termReferenceLink :: Paths.TermReferenceLink -> Core.Term+termReferenceLink x =+ Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TermReferenceLink"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "step"),+ Core.fieldTerm = (subtermStep (Paths.termReferenceLinkStep x))},+ Core.Field {+ Core.fieldName = (Core.Name "target"),+ Core.fieldTerm = (termReference (Paths.termReferenceLinkTarget x))}]})++-- | Encoder for hydra.paths.TypeAttributeLink+typeAttributeLink :: Paths.TypeAttributeLink -> Core.Term+typeAttributeLink x =+ case x of+ Paths.TypeAttributeLinkAnnotatedAnnotation v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TypeAttributeLink"),+ Core.injectionField = Core.Field { Core.fieldName = (Core.Name "annotatedAnnotation"), Core.fieldTerm = (EncodeCore.term v0)}})- Paths.TypeAttributeForallParameter v0 -> Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.paths.TypeAttribute"),+ Paths.TypeAttributeLinkForallParameter v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TypeAttributeLink"), Core.injectionField = Core.Field { Core.fieldName = (Core.Name "forallParameter"), Core.fieldTerm = (EncodeCore.name v0)}})+ Paths.TypeAttributeLinkLiteral v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TypeAttributeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "literal"),+ Core.fieldTerm = (EncodeCore.literalType v0)}})++-- | Encoder for hydra.paths.TypeGraph+typeGraph :: Paths.TypeGraph -> Core.Term+typeGraph x =+ Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TypeGraph"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "roots"),+ Core.fieldTerm = ((\m -> Core.TermMap (Maps.bimap EncodeCore.name typeNode m)) (Paths.typeGraphRoots x))}]})++-- | Encoder for hydra.paths.TypeLink+typeLink :: Paths.TypeLink -> Core.Term+typeLink x =+ case x of+ Paths.TypeLinkAttribute v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TypeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "attribute"),+ Core.fieldTerm = (typeAttributeLink v0)}})+ Paths.TypeLinkReference v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TypeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "reference"),+ Core.fieldTerm = (typeReferenceLink v0)}})+ Paths.TypeLinkSubtype v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TypeLink"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "subtype"),+ Core.fieldTerm = (subtypeLink v0)}})++-- | Encoder for hydra.paths.TypeNode+typeNode :: Paths.TypeNode -> Core.Term+typeNode x =+ Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TypeNode"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "type"),+ Core.fieldTerm = (EncodeCore.type_ (Paths.typeNodeType x))},+ Core.Field {+ Core.fieldName = (Core.Name "links"),+ Core.fieldTerm = ((\xs -> Core.TermList (Lists.map typeLink xs)) (Paths.typeNodeLinks x))}]})++-- | Encoder for hydra.paths.TypeNodeId+typeNodeId :: Paths.TypeNodeId -> Core.Term+typeNodeId x =+ Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TypeNodeId"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "root"),+ Core.fieldTerm = (EncodeCore.name (Paths.typeNodeIdRoot x))},+ Core.Field {+ Core.fieldName = (Core.Name "path"),+ Core.fieldTerm = (subtypePath (Paths.typeNodeIdPath x))}]})++-- | Encoder for hydra.paths.TypeReference+typeReference :: Paths.TypeReference -> Core.Term+typeReference x =+ case x of+ Paths.TypeReferenceNominal v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TypeReference"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "nominal"),+ Core.fieldTerm = (nominalTypeReference v0)}})+ Paths.TypeReferenceVariable v0 -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.paths.TypeReference"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "variable"),+ Core.fieldTerm = (typeVariableReference v0)}})++-- | Encoder for hydra.paths.TypeReferenceLink+typeReferenceLink :: Paths.TypeReferenceLink -> Core.Term+typeReferenceLink x =+ Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TypeReferenceLink"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "step"),+ Core.fieldTerm = (subtypeStep (Paths.typeReferenceLinkStep x))},+ Core.Field {+ Core.fieldName = (Core.Name "target"),+ Core.fieldTerm = (typeReference (Paths.typeReferenceLinkTarget x))}]})++-- | Encoder for hydra.paths.TypeVariableReference+typeVariableReference :: Paths.TypeVariableReference -> Core.Term+typeVariableReference x =+ Core.TermRecord (Core.Record {+ Core.recordTypeName = (Core.Name "hydra.paths.TypeVariableReference"),+ Core.recordFields = [+ Core.Field {+ Core.fieldName = (Core.Name "variable"),+ Core.fieldTerm = (EncodeCore.name (Paths.typeVariableReferenceVariable x))},+ Core.Field {+ Core.fieldName = (Core.Name "boundByNode"),+ Core.fieldTerm = (typeNodeId (Paths.typeVariableReferenceBoundByNode x))}]})
src/main/haskell/Hydra/Encode/Util.hs view
@@ -39,6 +39,11 @@ Core.injectionField = Core.Field { Core.fieldName = (Core.Name "upperSnake"), Core.fieldTerm = Core.TermUnit}})+ Util.CaseConventionUpperDashed -> Core.TermInject (Core.Injection {+ Core.injectionTypeName = (Core.Name "hydra.util.CaseConvention"),+ Core.injectionField = Core.Field {+ Core.fieldName = (Core.Name "upperDashed"),+ Core.fieldTerm = Core.TermUnit}}) -- | Encoder for hydra.util.Comparison comparison :: Util.Comparison -> Core.Term
src/main/haskell/Hydra/Encoding.hs view
@@ -331,7 +331,8 @@ (Packaging.unModuleName (Packaging.moduleName mod))])), Packaging.entityMetadataComments = [], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.moduleDependencies = (Lists.map (\ns -> Packaging.ModuleDependency { Packaging.moduleDependencyModule = ns, Packaging.moduleDependencyPackage = Nothing}) (Lists.distinct (Lists.concat2 (Lists.map encodeModuleName (Lists.map (\dep -> Packaging.moduleDependencyModule dep) (Packaging.moduleDependencies mod))) [
src/main/haskell/Hydra/Error/Packaging.hs view
@@ -183,6 +183,10 @@ InvalidPackageErrorInvalidModule InvalidModuleError | -- | A package whose name does not match the package-name naming convention InvalidPackageErrorInvalidPackageName InvalidPackageNameError |+ -- | A module namespace declared by more than one package+ InvalidPackageErrorModuleInMultiplePackages ModuleInMultiplePackagesError |+ -- | A module namespace that is a strict dotted-prefix of another module namespace in the same package+ InvalidPackageErrorNestedModuleName NestedModuleNameError | -- | A module references a name owned by another module that is not among its declared dependencies InvalidPackageErrorUndeclaredDependency UndeclaredDependencyError deriving (Eq, Ord, Read, Show)@@ -197,6 +201,10 @@ _InvalidPackageError_invalidPackageName = Core.Name "invalidPackageName" +_InvalidPackageError_moduleInMultiplePackages = Core.Name "moduleInMultiplePackages"++_InvalidPackageError_nestedModuleName = Core.Name "nestedModuleName"+ _InvalidPackageError_undeclaredDependency = Core.Name "undeclaredDependency" -- | A package whose name does not match the hyphen-separated lowercase naming convention. Package names must be hyphen-separated lowercase segments, each starting with a letter, e.g. hydra-kernel or hydra-python.@@ -224,6 +232,40 @@ _MissingDocumentationError_moduleName = Core.Name "moduleName" _MissingDocumentationError_name = Core.Name "name"++-- | A module namespace declared by more than one package. Module-to-package routing requires each package's declared module set to partition the module universe; a namespace declared by two packages would otherwise be routed to one of them arbitrarily, with the other declaration silently ignored.+data ModuleInMultiplePackagesError =+ ModuleInMultiplePackagesError {+ -- | The module namespace declared by more than one package+ moduleInMultiplePackagesErrorModuleName :: Packaging.ModuleName,+ -- | The name of the first package declaring the module+ moduleInMultiplePackagesErrorFirstPackage :: Packaging.PackageName,+ -- | The name of the second package declaring the module+ moduleInMultiplePackagesErrorSecondPackage :: Packaging.PackageName}+ deriving (Eq, Ord, Read, Show)++_ModuleInMultiplePackagesError = Core.Name "hydra.error.packaging.ModuleInMultiplePackagesError"++_ModuleInMultiplePackagesError_moduleName = Core.Name "moduleName"++_ModuleInMultiplePackagesError_firstPackage = Core.Name "firstPackage"++_ModuleInMultiplePackagesError_secondPackage = Core.Name "secondPackage"++-- | A module namespace which is a strict dotted-prefix of another module namespace in the same package, e.g. hydra.codegen and hydra.codegen.docs. When two such namespaces coexist, a definition name that is prefix-valid for both modules cannot be unambiguously assigned to one.+data NestedModuleNameError =+ NestedModuleNameError {+ -- | The shorter namespace, a strict dotted-prefix of the inner namespace+ nestedModuleNameErrorOuter :: Packaging.ModuleName,+ -- | The longer namespace, which has the outer namespace as a strict dotted-prefix+ nestedModuleNameErrorInner :: Packaging.ModuleName}+ deriving (Eq, Ord, Read, Show)++_NestedModuleNameError = Core.Name "hydra.error.packaging.NestedModuleNameError"++_NestedModuleNameError_outer = Core.Name "outer"++_NestedModuleNameError_inner = Core.Name "inner" -- | A module references a name owned by another module which is not among its declared moduleDependencies. Like a missing import: the reference may still resolve today via another module's transitive dependencies, but the declared dependency list no longer reflects what the module actually uses, and inference-time resolution is not guaranteed. data UndeclaredDependencyError =
src/main/haskell/Hydra/Formatting.hs view
@@ -67,16 +67,19 @@ in (Lists.map Strings.fromList (Lists.foldl splitOnUppercase [ []] (Lists.reverse (Strings.toList (decapitalize original))))) byUnderscores = Strings.splitOn "_" original+ byDashes = Strings.splitOn "-" original in case from of Util.CaseConventionCamel -> byCaps Util.CaseConventionPascal -> byCaps Util.CaseConventionLowerSnake -> byUnderscores Util.CaseConventionUpperSnake -> byUnderscores+ Util.CaseConventionUpperDashed -> byDashes in case to of Util.CaseConventionCamel -> decapitalize (Strings.concat (Lists.map (\arg_ -> capitalize (Strings.toLower arg_)) parts)) Util.CaseConventionPascal -> Strings.concat (Lists.map (\arg_ -> capitalize (Strings.toLower arg_)) parts) Util.CaseConventionLowerSnake -> Strings.join "_" (Lists.map Strings.toLower parts) Util.CaseConventionUpperSnake -> Strings.join "_" (Lists.map Strings.toUpper parts)+ Util.CaseConventionUpperDashed -> Strings.join "-" (Lists.map Strings.toUpper parts) -- | Convert a string from camel case (possibly with underscores) to lower snake case. Splits on underscores first, then converts each part from camel case. convertCaseCamelOrUnderscoreToLowerSnake :: String -> String
src/main/haskell/Hydra/Json/Bootstrap.hs view
@@ -2363,11 +2363,19 @@ Core.annotatedTypeAnnotation = (Core.TermMap (M.fromList [ ( Core.TermVariable (Core.Name "description"),- (Core.TermLiteral (Core.LiteralString "Optional version-lifecycle milestones for the entity.")))]))}))}]),+ (Core.TermLiteral (Core.LiteralString "Optional version-lifecycle milestones for the entity.")))]))}))},+ Core.FieldType {+ Core.fieldTypeName = (Core.Name "provisions"),+ Core.fieldTypeType = (Core.TypeAnnotated (Core.AnnotatedType {+ Core.annotatedTypeBody = (Core.TypeList (Core.TypeVariable (Core.Name "hydra.packaging.Provision"))),+ Core.annotatedTypeAnnotation = (Core.TermMap (M.fromList [+ (+ Core.TermVariable (Core.Name "description"),+ (Core.TermLiteral (Core.LiteralString "Named normative provisions (requirements and recommendations) concerning this entity. Empty when the entity states none.")))]))}))}]), Core.annotatedTypeAnnotation = (Core.TermMap (M.fromList [ ( Core.TermVariable (Core.Name "description"),- (Core.TermLiteral (Core.LiteralString "Documentation and lifecycle metadata attachable to a packaging entity (package, module, or definition). Bundling these fields in one type lets future metadata be added without changing the field shape of the entities that carry it.")))]))}))),+ (Core.TermLiteral (Core.LiteralString "Documentation, lifecycle, and normative metadata attachable to a packaging entity (package, module, or definition). Bundling these fields in one type lets future metadata be added without changing the field shape of the entities that carry it.")))]))}))), ( Core.Name "hydra.packaging.EntityReference", (Core.TypeAnnotated (Core.AnnotatedType {@@ -2633,6 +2641,62 @@ Core.TermVariable (Core.Name "description"), (Core.TermLiteral (Core.LiteralString "A primitive definition: the universal, host-independent declarative metadata for a primitive, including name, signature, documentation and lifecycle metadata, totality and purity flags, and an optional default implementation expressed as a Hydra term.")))]))}))), (+ Core.Name "hydra.packaging.Provision",+ (Core.TypeAnnotated (Core.AnnotatedType {+ Core.annotatedTypeBody = (Core.TypeRecord [+ Core.FieldType {+ Core.fieldTypeName = (Core.Name "name"),+ Core.fieldTypeType = (Core.TypeAnnotated (Core.AnnotatedType {+ Core.annotatedTypeBody = (Core.TypeVariable (Core.Name "hydra.core.Name")),+ Core.annotatedTypeAnnotation = (Core.TermMap (M.fromList [+ (+ Core.TermVariable (Core.Name "description"),+ (Core.TermLiteral (Core.LiteralString "The fully-qualified name of the provision: the enclosing entity's name extended by one segment (e.g. hydra.lib.lists.concat.emptyLists). Composed at definition time by a helper that prefixes the entity's name, exactly as a definition's name is composed from its module's name -- so the author writes only the final segment, but the stored value is the full name.")))]))}))},+ Core.FieldType {+ Core.fieldTypeName = (Core.Name "kind"),+ Core.fieldTypeType = (Core.TypeAnnotated (Core.AnnotatedType {+ Core.annotatedTypeBody = (Core.TypeVariable (Core.Name "hydra.packaging.ProvisionKind")),+ Core.annotatedTypeAnnotation = (Core.TermMap (M.fromList [+ (+ Core.TermVariable (Core.Name "description"),+ (Core.TermLiteral (Core.LiteralString "Whether this provision is a requirement or a recommendation.")))]))}))},+ Core.FieldType {+ Core.fieldTypeName = (Core.Name "statement"),+ Core.fieldTypeType = (Core.TypeAnnotated (Core.AnnotatedType {+ Core.annotatedTypeBody = (Core.TypeLiteral Core.LiteralTypeString),+ Core.annotatedTypeAnnotation = (Core.TermMap (M.fromList [+ (+ Core.TermVariable (Core.Name "description"),+ (Core.TermLiteral (Core.LiteralString "The normative statement itself, as markdown prose: the falsifiable claim.")))]))}))}]),+ Core.annotatedTypeAnnotation = (Core.TermMap (M.fromList [+ (+ Core.TermVariable (Core.Name "description"),+ (Core.TermLiteral (Core.LiteralString "A named normative statement concerning an entity: a single falsifiable condition a conforming implementation is measured against. Tests reference provisions by name.")))]))}))),+ (+ Core.Name "hydra.packaging.ProvisionKind",+ (Core.TypeAnnotated (Core.AnnotatedType {+ Core.annotatedTypeBody = (Core.TypeUnion [+ Core.FieldType {+ Core.fieldTypeName = (Core.Name "requirement"),+ Core.fieldTypeType = (Core.TypeAnnotated (Core.AnnotatedType {+ Core.annotatedTypeBody = Core.TypeUnit,+ Core.annotatedTypeAnnotation = (Core.TermMap (M.fromList [+ (+ Core.TermVariable (Core.Name "description"),+ (Core.TermLiteral (Core.LiteralString "A requirement: no deviation is permitted if conformance is to be claimed (MUST).")))]))}))},+ Core.FieldType {+ Core.fieldTypeName = (Core.Name "recommendation"),+ Core.fieldTypeType = (Core.TypeAnnotated (Core.AnnotatedType {+ Core.annotatedTypeBody = Core.TypeUnit,+ Core.annotatedTypeAnnotation = (Core.TermMap (M.fromList [+ (+ Core.TermVariable (Core.Name "description"),+ (Core.TermLiteral (Core.LiteralString "A recommendation: observed strictly by the Hydra kernel and codebase, but a downstream project may opt out (SHOULD).")))]))}))}]),+ Core.annotatedTypeAnnotation = (Core.TermMap (M.fromList [+ (+ Core.TermVariable (Core.Name "description"),+ (Core.TermLiteral (Core.LiteralString "Whether a provision is a requirement (a MUST: no deviation permitted for conformance) or a recommendation (a SHOULD: observed by the Hydra kernel, but a downstream project may opt out).")))]))}))),+ ( Core.Name "hydra.packaging.TermDefinition", (Core.TypeAnnotated (Core.AnnotatedType { Core.annotatedTypeBody = (Core.TypeRecord [@@ -3085,6 +3149,9 @@ Core.fieldTypeType = Core.TypeUnit}, Core.FieldType { Core.fieldTypeName = (Core.Name "upperSnake"),+ Core.fieldTypeType = Core.TypeUnit},+ Core.FieldType {+ Core.fieldTypeName = (Core.Name "upperDashed"), Core.fieldTypeType = Core.TypeUnit}]), Core.annotatedTypeAnnotation = (Core.TermMap (M.fromList [ (
src/main/haskell/Hydra/Json/Decode.hs view
@@ -197,16 +197,18 @@ Core.TypeLiteral v0 -> decodeLiteral v0 value Core.TypeList v0 -> let decodeElem = \v -> fromJson types compactMaps tname v0 v- arrResult = expectArray value- in (Eithers.either (\err -> Left err) (\arr ->- let decoded = Eithers.mapList decodeElem arr- in (Eithers.map (\ts -> Core.TermList ts) decoded)) arrResult)+ in case value of+ Model.ValueNull -> Right (Core.TermList [])+ _ -> Eithers.either (\err -> Left err) (\arr ->+ let decoded = Eithers.mapList decodeElem arr+ in (Eithers.map (\ts -> Core.TermList ts) decoded)) (expectArray value) Core.TypeSet v0 -> let decodeElem = \v -> fromJson types compactMaps tname v0 v- arrResult = expectArray value- in (Eithers.either (\err -> Left err) (\arr ->- let decoded = Eithers.mapList decodeElem arr- in (Eithers.map (\elems -> Core.TermSet (Sets.fromList elems)) decoded)) arrResult)+ in case value of+ Model.ValueNull -> Right (Core.TermSet Sets.empty)+ _ -> Eithers.either (\err -> Left err) (\arr ->+ let decoded = Eithers.mapList decodeElem arr+ in (Eithers.map (\elems -> Core.TermSet (Sets.fromList elems)) decoded)) (expectArray value) Core.TypeOptional v0 -> let innerStripped = Strip.deannotateType v0 isNestedMaybe =@@ -344,11 +346,11 @@ in (Eithers.either (\err -> Left err) (\obj -> let leftJson = Maps.lookup "left" obj rightJson = Maps.lookup "right" obj- in (Optionals.match leftJson (Optionals.match rightJson (Left "expected left or right in Either") (\rj ->+ in (Logic.ifElse (Logic.and (Optionals.isGiven leftJson) (Optionals.isGiven rightJson)) (Left "Either object must not carry both left and right keys") (Optionals.match leftJson (Optionals.match rightJson (Left "expected left or right in Either") (\rj -> let decoded = fromJson types compactMaps tname rightType rj in (Eithers.map (\v -> Core.TermEither (Right v)) decoded))) (\lj -> let decoded = fromJson types compactMaps tname leftType lj- in (Eithers.map (\v -> Core.TermEither (Left v)) decoded)))) objResult)+ in (Eithers.map (\v -> Core.TermEither (Left v)) decoded))))) objResult) Core.TypeVariable v0 -> let lookedUp = Maps.lookup v0 types in (Optionals.match lookedUp (Left (Strings.concat [
src/main/haskell/Hydra/Json/Parser.hs view
@@ -107,7 +107,7 @@ token (Parsers.bind jsonIntegerPart (\intPart -> Parsers.bind jsonFractionPart (\fracPart -> Parsers.bind jsonExponentPart (\expPart -> let numStr = Strings.concat2 (Strings.concat2 intPart (Optionals.match fracPart "" Functions.identity)) (Optionals.match expPart "" Functions.identity)- in (Parsers.pure (Model.ValueNumber (Optionals.match (Literals.parseDecimal numStr) (Literals.stringToDecimal "0.0") Functions.identity)))))))+ in (Parsers.pure (Model.ValueNumber (Optionals.match (Literals.parseDecimal numStr) (Literals.stringToDecimal "0") Functions.identity))))))) -- | Parse a JSON object jsonObject :: Parsing.Parser Model.Value
src/main/haskell/Hydra/Json/Writer.hs view
@@ -100,7 +100,11 @@ Model.ValueNumber v0 -> let rounded = Literals.decimalToBigint v0 shown = Literals.printDecimal v0- isWhole = Equality.equal v0 (Literals.bigintToDecimal rounded)+ notExponential = Ordering.lte (Lists.length (Strings.splitOn "e" shown)) 1+ fracParts = Strings.splitOn "." shown+ frac = Optionals.withDefault "" (Lists.at 1 fracParts)+ isWhole =+ Logic.and notExponential (Logic.or (Ordering.lte (Lists.length fracParts) 1) (Strings.isEmpty (Strings.concat (Strings.splitOn "0" frac)))) plain = Literals.printBigint rounded in (Serialization.cst (Logic.ifElse (Logic.and isWhole (Ordering.lte (Strings.length plain) (Strings.length shown))) plain shown)) Model.ValueObject v0 -> Serialization.bracesListAdaptive (Lists.map keyValueToExpr v0)
src/main/haskell/Hydra/Lib/Chars.hs view
@@ -49,7 +49,8 @@ "Alphabetic is broader than cased: letters in scripts without a case distinction are included. isAlphaNum is true whenever isAlpha is true.", "Total. Corresponds to Haskell's Data.Char.isAlpha :: Char -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -77,7 +78,8 @@ "The classification is based on Unicode general categories (any of L*, Nd, Nl, No).", "Total. Corresponds to Haskell's Data.Char.isAlphaNum :: Char -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -104,7 +106,8 @@ "Unlike the other predicates in this module, this one is deliberately ASCII-only: decimal digits outside the ASCII range (general category Nd) are rejected here, though isAlphaNum accepts them.", "Total. Corresponds to Haskell's Data.Char.isDigit :: Char -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -132,7 +135,8 @@ "Note that not every letter is classified as uppercase or lowercase (e.g. titlecase letters, modifier letters, and letters in scripts without a case distinction are neither).", "Total. Corresponds to Haskell's Data.Char.isLower :: Char -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -159,7 +163,8 @@ "The whitespace set follows Haskell's Data.Char.isSpace, which recognises U+0020 (space), U+0009 (tab), U+000A (line feed), U+000B (vertical tab), U+000C (form feed), U+000D (carriage return), U+00A0 (no-break space), and other Unicode characters with general category Zs, Zl, or Zp.", "Total. Corresponds to Haskell's Data.Char.isSpace :: Char -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -187,7 +192,8 @@ "Note that titlecase letters (Lt) are not classified as uppercase by this predicate.", "Total. Corresponds to Haskell's Data.Char.isUpper :: Char -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -215,7 +221,8 @@ "The argument is interpreted as a Unicode code point.", "Total. Corresponds to Haskell's Data.Char.toLower :: Char -> Char."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -243,7 +250,8 @@ "The argument is interpreted as a Unicode code point.", "Total. Corresponds to Haskell's Data.Char.toUpper :: Char -> Char."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [
src/main/haskell/Hydra/Lib/Effects.hs view
@@ -46,7 +46,8 @@ Packaging.entityMetadataComments = [ "apply(ef, ex) describes an effectful computation which first interprets ef to produce a function, then interprets ex to produce an argument, and returns the result of applying the function to the argument."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -85,7 +86,8 @@ "bind(e, f) describes an effectful computation which first interprets e, then passes its result to f to obtain the next effect.", "Host interpreters provide the operational meaning; Hydra uses the type effect<t> to keep the effect boundary explicit."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -123,7 +125,8 @@ Packaging.entityMetadataComments = [ "compose(f, g, x) describes an effectful computation equivalent to bind(f(x), g)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -171,7 +174,8 @@ Packaging.entityMetadataComments = [ "foldList(f, acc0, xs) describes an effectful left fold over xs, sequencing applications of f from left to right."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -217,7 +221,8 @@ "map(f, e) describes an effectful computation which interprets e and applies f to its result.", "Equivalent to bind(e, \\x -> pure(f x))."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -255,7 +260,8 @@ Packaging.entityMetadataComments = [ "mapList(f, xs) describes an effectful computation which applies f to each element of xs from left to right and collects the results."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -293,7 +299,8 @@ Packaging.entityMetadataComments = [ "mapOptional(f, m) describes an effectful computation which returns none when m is none, or applies f to the contained value and wraps the result in given."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -332,7 +339,8 @@ "mapSet(f, s) describes an effectful computation which applies f to each element of s, sequencing the effects in ascending element order (the order is normative, since the effects are observable), and collects the results as a set, deduplicated by the result type's ordering.", "Requires 'ordering' constraints on both element types (the set type contract)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -372,7 +380,8 @@ Packaging.entityMetadataComments = [ "pure(x) describes an effectful computation which succeeds with x without requiring host interaction."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {
src/main/haskell/Hydra/Lib/Eithers.hs view
@@ -49,7 +49,8 @@ "apply(ef, ex) is bind(ef, \\f -> map(f, ex)); this defining equation is the specification, and the default implementation.", "Total. Corresponds to Haskell's (<*>) :: Either a (b -> c) -> Either a b -> Either a c."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -114,7 +115,8 @@ "bimap(f, g, e) applies f to the contained value if e is a Left, or g if e is a Right; the result retains the same Left/Right variant.", "Total. Corresponds to Haskell's Data.Bifunctor.bimap :: (a -> c) -> (b -> d) -> Either a b -> Either c d."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -196,7 +198,8 @@ "Used to chain computations that may fail with a common error type.", "Total. Corresponds to Haskell's (>>=) :: Either a b -> (b -> Either a c) -> Either a c."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -260,7 +263,8 @@ "If either f(x) or the second stage produces a left, the result is that left.", "Total. Corresponds to Kleisli composition (>=>) specialised to Either with a fixed Left type."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -337,7 +341,8 @@ Packaging.entityMetadataSeeAlso = [], Packaging.entityMetadataLifecycle = (Just (Packaging.LifecycleInfo { Packaging.lifecycleInfoAvailableSince = Nothing,- Packaging.lifecycleInfoDeprecatedSince = (Just (Packaging.Version "0.18"))}))})),+ Packaging.lifecycleInfoDeprecatedSince = (Just (Packaging.Version "0.18"))})),+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -388,7 +393,8 @@ "foldList(f, acc0, xs) folds f over xs from the left, threading an accumulator of type a, where each application may fail with Left e: it iterates while f returns Right, propagates Left on the first failure, and returns Right (final accumulator) if all elements were processed.", "Corresponds to a short-circuiting variant of Haskell's foldM specialised to Either."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -473,7 +479,8 @@ "True if the argument is a Left variant, false if a Right.", "Total. Corresponds to Haskell's Data.Either.isLeft :: Either a b -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -522,7 +529,8 @@ "True if the argument is a Right variant, false if a Left.", "Total. Corresponds to Haskell's Data.Either.isRight :: Either a b -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -571,7 +579,8 @@ "left(x) is Left x. The dual constructor to right, injecting into the Left (error/exceptional) side of an either.", "Total. Corresponds to Haskell's Left :: a -> Either a b."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -605,7 +614,8 @@ "lefts(xs) returns a list containing every Left value in xs, in original order, with Right values discarded.", "Total. Corresponds to Haskell's Data.Either.lefts :: [Either a b] -> [a]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -671,7 +681,8 @@ "The functor instance for either; treats the Right variant as the focus and leaves the Left variant alone.", "Total. Corresponds to Haskell's fmap :: (a -> b) -> Either e a -> Either e b."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -737,7 +748,8 @@ "mapList(f, xs) applies f to each element of xs. If every application returns Right, the result is Right of the list of contained values, in original order. The first application that returns Left short-circuits the whole result to that Left.", "Total. Corresponds to Haskell's traverse :: (a -> Either e b) -> [a] -> Either e [b]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -821,7 +833,8 @@ "mapOptional(f, m) returns Right none if m is none; otherwise applies f to the contained value and returns the result with Right wrapped around given.", "Total. Corresponds to Haskell's traverse :: (a -> Either e b) -> Maybe a -> Either e (Maybe b)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -892,7 +905,8 @@ "Requires an 'ordering' constraint on the input and output element types.", "Total. Corresponds to Haskell's traverse-style operation specialised to Set."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -989,7 +1003,8 @@ "partition(xs) returns a pair (lefts, rights) where lefts contains every Left value from xs in original order and rights contains every Right value from xs in original order.", "Total. Corresponds to Haskell's Data.Either.partitionEithers :: [Either a b] -> ([a], [b])."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1072,7 +1087,8 @@ "right(x) is Right x. The dual constructor to left, injecting into the Right (success/normal) side of an either.", "Total. Corresponds to Haskell's Right :: b -> Either a b."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1106,7 +1122,8 @@ "rights(xs) returns a list containing every Right value in xs, in original order, with Left values discarded.", "Total. Corresponds to Haskell's Data.Either.rights :: [Either a b] -> [b]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {
src/main/haskell/Hydra/Lib/Equality.hs view
@@ -49,7 +49,8 @@ "Equality is reflexive, symmetric, and transitive (no NaN-style exception on floating-point: floating-point equality is provided per the underlying host's IEEE 754 comparison rules, so NaN /= NaN at the level of float64/float32).", "Total. Corresponds to Haskell's (==) :: Eq a => a -> a -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -85,7 +86,8 @@ "Requires an 'equality' type-class constraint on the argument type.", "Total. Corresponds to Haskell's (/=) :: Eq a => a -> a -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {
src/main/haskell/Hydra/Lib/Files.hs view
@@ -46,7 +46,8 @@ Packaging.entityMetadataComments = [ "appendFile(path, contents) describes an effectful computation which attempts to append the raw bytes contents to the end of the file at path, creating the file if it does not exist. Unlike writeFile, existing contents are preserved. File I/O is byte-oriented; to append text, encode it to bytes first (e.g. via hydra.lib.text.encodeUtf8). A recoverable file-system failure is returned as left(error); success is returned as right(unit)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -81,7 +82,8 @@ Packaging.entityMetadataSeeAlso = [], Packaging.entityMetadataLifecycle = (Just (Packaging.LifecycleInfo { Packaging.lifecycleInfoAvailableSince = Nothing,- Packaging.lifecycleInfoDeprecatedSince = (Just (Packaging.Version "0.18"))}))})),+ Packaging.lifecycleInfoDeprecatedSince = (Just (Packaging.Version "0.18"))})),+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -118,7 +120,8 @@ Packaging.entityMetadataComments = [ "createDirectory(recursive, path) describes an effectful computation which attempts to create a directory at path. When recursive is false this corresponds to POSIX mkdir: it fails if path already exists or if a parent is missing. When recursive is true, any missing parent directories are created as well (as with mkdir -p) and an already-existing directory is not an error. A recoverable file-system failure is returned as left(error); success is returned as right(unit)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -150,7 +153,8 @@ Packaging.entityMetadataComments = [ "createSymlink(target, link) describes an effectful computation which attempts to create a symbolic link at link, pointing to target (POSIX symlink). target is stored verbatim; it may be a relative path, and it need not exist. There is no force flag: if link already exists (including as a dangling symbolic link), the computation fails with left(alreadyExists); a caller that wants replace-if-exists semantics should compose status(false, link), removeFile, and createSymlink. A missing parent directory yields left(notFound); a host or file system which refuses to create the link (e.g. an unprivileged process on Windows, or an unsupported file system) yields left(permissionDenied) or left(other) as appropriate. A recoverable file-system failure is returned as left(error); success is returned as right(unit)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -182,7 +186,8 @@ Packaging.entityMetadataComments = [ "exists(path) describes an effectful computation which reports whether anything exists at path, whether a file, directory, or other type of file. It does not error when the path is absent; a missing path is reported as right(false). Use status to obtain the type of an existing path. A recoverable file-system failure is returned as left(error)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -209,7 +214,8 @@ Packaging.entityMetadataComments = [ "listDirectory(path) describes an effectful computation which returns the immediate entries of the directory at path, excluding the special entries \".\" and \"..\". The result is one level deep and is not ordered; to traverse a tree recursively, recurse using status. A recoverable file-system failure is returned as left(error)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -236,7 +242,8 @@ Packaging.entityMetadataComments = [ "readFile(path) describes an effectful computation which attempts to read the entire contents of the file at path as raw bytes, with no character decoding or newline translation. To interpret the result as text, decode it (e.g. via hydra.lib.text.decodeUtf8). A recoverable file-system failure is returned as left(error); success is returned as right(contents)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -263,7 +270,8 @@ Packaging.entityMetadataComments = [ "readSymlink(path) describes an effectful computation which attempts to read the target of the symbolic link at path (POSIX readlink). This is a single-hop, unresolved read: the target is returned exactly as stored, with no chain resolution or canonicalization; a relative target is returned relative, and a dangling target (one that does not exist) is returned as-is. To resolve a chain of links to a canonical path, compose repeated calls to readSymlink and status. A missing path yields left(notFound); a path which exists but is not a symbolic link yields left(invalidPath). A recoverable file-system failure is returned as left(error); success is returned as right(target)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -290,7 +298,8 @@ Packaging.entityMetadataComments = [ "removeDirectory(recursive, path) describes an effectful computation which attempts to remove the directory at path. When recursive is false this corresponds to POSIX rmdir: it fails unless the directory is empty. When recursive is true, the directory and its entire contents are removed (as with rm -r). Removal is performed by the host operating system rather than by walking and deleting entries individually. A recoverable file-system failure is returned as left(error); success is returned as right(unit)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -322,7 +331,8 @@ Packaging.entityMetadataComments = [ "removeFile(path) describes an effectful computation which attempts to remove the file at path (POSIX unlink). A recoverable file-system failure is returned as left(error); success is returned as right(unit)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -349,7 +359,8 @@ Packaging.entityMetadataComments = [ "rename(source, destination) describes an effectful computation which attempts to rename the file or directory at source to destination. When source and destination are on the same file system this is atomic (POSIX rename) and cannot be reproduced by a copy followed by a delete. A recoverable file-system failure is returned as left(error); success is returned as right(unit)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -381,7 +392,8 @@ Packaging.entityMetadataComments = [ "status(followLinks, path) describes an effectful computation which retrieves metadata about the file system entry at path, including its type, size, and modification time. When followLinks is true, this corresponds to POSIX stat: if path is a symbolic link, the metadata describes the link's target, and a dangling link (whose target does not exist) yields left(notFound). When followLinks is false, this corresponds to POSIX lstat: the metadata describes the link itself, with fileType link, a size equal to the length of the stored target path, and the link's own timestamps; a dangling link is not an error in this mode. status(false, path) is the only way to observe fileType link; status(true, path) never produces it, since a followed link's metadata is always that of its (non-link) target. For paths that are not symbolic links, both modes report identical metadata. A path which does not exist yields left(notFound); other recoverable file-system failures are also returned as left(error). Use exists for a boolean presence check that does not error on absence."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -413,7 +425,8 @@ Packaging.entityMetadataComments = [ "writeFile(path, contents) describes an effectful computation which attempts to replace the file at path with the raw bytes contents, with no character encoding or newline translation. To write text, encode it to bytes first (e.g. via hydra.lib.text.encodeUtf8). A recoverable file-system failure is returned as left(error); success is returned as right(unit)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [
src/main/haskell/Hydra/Lib/Functions.hs view
@@ -49,7 +49,8 @@ "The eliminator dual to the (nonexistent) introducer for void.", "Total, vacuously: there is no well-typed argument on which absurd could be called. Corresponds to Haskell's Data.Void.absurd :: Void -> a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -80,7 +81,8 @@ "This is ordinary function composition, distinct from the Kleisli compose primitives of the monad modules.", "Total. Corresponds to Haskell's (.) :: (b -> c) -> (a -> b) -> a -> c."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -143,7 +145,8 @@ "Partially applied, const(x) is the constant function which returns x on every input.", "Total. Corresponds to Haskell's const :: a -> b -> a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -186,7 +189,8 @@ "flip(f, x, y) = f(y, x); this defining equation is the specification.", "Total. Corresponds to Haskell's flip :: (a -> b -> c) -> b -> a -> c."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -249,7 +253,8 @@ "identity is the unit of compose: compose(identity, f) and compose(f, identity) are both f.", "Total. Corresponds to Haskell's id :: a -> a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {
src/main/haskell/Hydra/Lib/Hashing.hs view
@@ -47,7 +47,8 @@ "sha256(bytes) returns the 32-byte SHA-256 digest of bytes. Total: hashing is pure and never fails.", "Pairs with hydra.lib.files.readFile, which returns raw bytes, to hash file contents."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -73,7 +74,8 @@ "sha256Hex(bytes) returns the SHA-256 digest of bytes as a 64-character lowercase hexadecimal string. Equivalent to hex-encoding the output of sha256. Total: hashing is pure and never fails.", "Pairs with hydra.lib.files.readFile, which returns raw bytes, to hash file contents."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [
src/main/haskell/Hydra/Lib/Lists.hs view
@@ -48,7 +48,8 @@ "Equivalent to the applicative list instance.", "Total. Corresponds to Haskell's (<*>) :: [a -> b] -> [a] -> [b]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -87,7 +88,8 @@ "at(i, xs) returns Just(xs[i]) if 0 <= i < length(xs), or Nothing otherwise.", "Total. Wraps the Haskell (!!) operator, which is partial, in maybe to make out-of-bounds total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -121,7 +123,8 @@ "bind(xs, f) applies f to each element of xs and concatenates the resulting lists in order. Equivalent to concatMap.", "Total. Corresponds to Haskell's (>>=) :: [a] -> (a -> [b]) -> [b]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -184,7 +187,8 @@ "compose(f, g, x) is bind(f(x), g); this defining equation is the specification. The results of applying g to each element of f(x) are concatenated in order.", "Total. Corresponds to Kleisli composition (>=>) in the list monad."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -233,7 +237,8 @@ "concat(xss) returns the list obtained by appending all the lists in xss in order.", "Total. Corresponds to Haskell's concat :: [[a]] -> [a]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -262,7 +267,8 @@ "concat2(xs, ys) returns xs with ys appended.", "Total. Corresponds to Haskell's (++) :: [a] -> [a] -> [a]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -296,7 +302,8 @@ "cons(x, xs) returns a list whose head is x and whose tail is xs.", "Total. Corresponds to Haskell's (:) :: a -> [a] -> [a]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -331,7 +338,8 @@ "Requires an 'equality' constraint on the element type.", "Total. Corresponds to Haskell's Data.List.nub :: Eq a => [a] -> [a]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -361,7 +369,8 @@ "drop(n, xs) returns the suffix of xs after dropping the first n elements; if n is greater than or equal to length(xs) the result is the empty list; if n is non-positive the result is xs unchanged.", "Total. Corresponds to Haskell's drop :: Int -> [a] -> [a]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -395,7 +404,8 @@ "dropWhile(p, xs) returns the suffix of xs starting at the first element for which p returns false. If p is true for every element, the result is the empty list.", "Total. Corresponds to Haskell's dropWhile :: (a -> Bool) -> [a] -> [a]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -443,7 +453,8 @@ "filter(p, xs) returns the list of elements x in xs for which p(x) is true, in original order.", "Total. Corresponds to Haskell's filter :: (a -> Bool) -> [a] -> [a]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -509,7 +520,8 @@ "find(p, xs) returns Just(x) where x is the first element of xs for which p(x) is true, or Nothing if no such element exists.", "Total. Corresponds to Haskell's find :: (a -> Bool) -> [a] -> Maybe a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -572,7 +584,8 @@ "foldList(f, acc0, xs) is foldl(\\macc el -> bind(macc, \\acc -> f(acc, el)), singleton(acc0), xs); this defining equation is the specification. For the empty list the result is singleton(acc0).", "Total on finite inputs. The list-monad instance of the monadic left fold."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -619,7 +632,8 @@ "Strict in the accumulator on hosts where laziness would otherwise leak space.", "Total on finite inputs. Corresponds to Haskell's foldl' :: (b -> a -> b) -> b -> [a] -> b."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -665,7 +679,8 @@ "foldr(f, acc0, xs) reduces xs right-associatively: foldr(f, acc0, [x1, ..., xn]) = f(x1, f(x2, ..., f(xn, acc0))). For the empty list the result is acc0.", "Total on finite inputs. Corresponds to Haskell's foldr :: (a -> b -> b) -> b -> [a] -> b."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -712,7 +727,8 @@ "Equality is determined by the element type's 'equality' constraint.", "Total. Corresponds to Haskell's Data.List.group :: Eq a => [a] -> [[a]]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -742,7 +758,8 @@ "head(xs) returns Just(x) where x is the first element of xs, or Nothing if xs is empty.", "Total. Wraps Haskell's partial head in maybe."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -771,7 +788,8 @@ "init(xs) returns Just(ys) where ys is xs with its last element removed, or Nothing if xs is empty.", "Total. Wraps Haskell's partial init in maybe."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -800,7 +818,8 @@ "intersperse(sep, xs) returns xs with sep inserted between each pair of adjacent elements; for lists of length 0 or 1 the input is returned unchanged.", "Total. Corresponds to Haskell's intersperse :: a -> [a] -> [a]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -834,7 +853,8 @@ "isEmpty(xs) returns true iff xs is the empty list.", "Total. Corresponds to Haskell's null :: [a] -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -863,7 +883,8 @@ "join(sep, xss) returns the concatenation of xss with sep inserted between consecutive lists. Equivalent to concat(intersperse(sep, xss)).", "Total. Corresponds to Haskell's intercalate :: [a] -> [[a]] -> [a]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -897,7 +918,8 @@ "last(xs) returns Just(x) where x is the last element of xs, or Nothing if xs is empty.", "Total. Wraps Haskell's partial last in maybe."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -927,7 +949,8 @@ "Total on finite inputs; the int32 result overflows for lists longer than 2^31-1 elements.", "Corresponds to Haskell's length :: [a] -> Int (with narrowing to Int32)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -956,7 +979,8 @@ "map(f, xs) returns the list of f(x) for each x in xs, in original order.", "Total. Corresponds to Haskell's map :: (a -> b) -> [a] -> [b] / fmap on lists."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -996,7 +1020,8 @@ "Results appear in the lexicographic order of the choices, with the choice for the first element varying slowest. The number of results is the product of the lengths of the lists f(x); if f(x) is empty for any element, the result is the empty list; mapList(f, []) is singleton([]).", "Total on finite inputs. The list-monad instance of the traversal family."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1035,7 +1060,8 @@ "mapOptional(f, m) returns the single-element list containing none when m is none; for given(x) it returns given(y) for each element y of f(x), in order.", "Total on finite inputs. The list-monad instance of the traversal family, applied to the optional container."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1075,7 +1101,8 @@ "A result set may have fewer elements than s when distinct choices coincide. If f(x) is empty for any element, the result is the empty list; for the empty set the result is the single-element list containing the empty set.", "Requires 'ordering' constraints on both element types (the set type contract)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1117,7 +1144,8 @@ "Requires an 'equality' constraint on the element type.", "Total. Corresponds to Haskell's elem :: Eq a => a -> [a] -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1152,7 +1180,8 @@ "partition(p, xs) returns a pair (yes, no) where yes is the list of elements of xs for which p is true and no is the list of elements for which p is false, each preserving original order.", "Total. Corresponds to Haskell's partition :: (a -> Bool) -> [a] -> ([a], [a])."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1236,7 +1265,8 @@ "replicate(n, x) returns a list of n copies of x; for n <= 0 the result is the empty list.", "Total. Corresponds to Haskell's replicate :: Int -> a -> [a]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1270,7 +1300,8 @@ "reverse(xs) returns the elements of xs in reverse order.", "Total. Corresponds to Haskell's reverse :: [a] -> [a]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1300,7 +1331,8 @@ "The constructor for a single-element list; useful point-free (e.g. map singleton xs).", "Total. Corresponds to Haskell's singleton :: a -> [a]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1330,7 +1362,8 @@ "Requires an 'ordering' constraint on the element type.", "Total. Corresponds to Haskell's Data.List.sort :: Ord a => [a] -> [a]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1361,7 +1394,8 @@ "Requires an 'ordering' constraint on the key type.", "Total. Corresponds to Haskell's Data.List.sortOn :: Ord b => (a -> b) -> [a] -> [a]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1401,7 +1435,8 @@ "span(p, xs) returns a pair (ys, zs) where ys is the longest prefix of xs whose elements all satisfy p, and zs is the remainder of xs starting at the first element that fails p (or zs is empty if all elements satisfy p).", "Total. Corresponds to Haskell's span :: (a -> Bool) -> [a] -> ([a], [a])."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1495,7 +1530,8 @@ "tail(xs) returns Just(ys) where ys is xs with its first element removed, or Nothing if xs is empty.", "Total. Wraps Haskell's partial tail in maybe."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1524,7 +1560,8 @@ "take(n, xs) returns the prefix of xs of length min(n, length(xs)); if n is non-positive the result is the empty list.", "Total. Corresponds to Haskell's take :: Int -> [a] -> [a]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1559,7 +1596,8 @@ "dropWhile returns the complementary suffix, and span(p, xs) returns the pair of takeWhile(p, xs) and dropWhile(p, xs).", "Total. Corresponds to Haskell's takeWhile :: (a -> Bool) -> [a] -> [a]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1607,7 +1645,8 @@ "transpose(xss) returns a list of lists where the i-th inner list contains the i-th element of every inner list of xss that has at least i+1 elements. Inner lists of differing lengths produce a ragged result rather than an error.", "Total. Corresponds to Haskell's Data.List.transpose :: [[a]] -> [[a]]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1636,7 +1675,8 @@ "uncons(xs) returns Just(head, tail) where head is the first element of xs and tail is the remaining list, or Nothing if xs is empty.", "Total. Corresponds to Haskell's Data.List.uncons :: [a] -> Maybe (a, [a])."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1667,7 +1707,8 @@ "zip(xs, ys) returns the list of pairs (xs[i], ys[i]) for i from 0 to min(length(xs), length(ys))-1. The result has length equal to the shorter of the two inputs.", "Total. Corresponds to Haskell's zip :: [a] -> [b] -> [(a, b)]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1706,7 +1747,8 @@ "zipWith(f, xs, ys) returns the list of f(xs[i], ys[i]) for i from 0 to min(length(xs), length(ys))-1. The result has length equal to the shorter of the two inputs.", "Total. Corresponds to Haskell's zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {
src/main/haskell/Hydra/Lib/Literals.hs view
@@ -47,7 +47,8 @@ "base64ToBinary(s) decodes the standard base64 (RFC 4648) ASCII string s and returns the resulting bytes as binary data.", "Inverse of binaryToBase64: base64ToBinary(binaryToBase64(b)) is b for every binary value. Behavior on strings which are not valid base64 is host-defined."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -73,7 +74,8 @@ "bigintToDecimal(x) returns the exact decimal representation of x. Since decimal is arbitrary-precision and bigint is also arbitrary-precision, the conversion is lossless.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -99,7 +101,8 @@ "bigintToInt16(x) returns x reduced modulo 2^16 and reinterpreted as a signed two's-complement int16. Values outside [-2^15, 2^15-1] wrap silently with no exception.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -125,7 +128,8 @@ "bigintToInt32(x) returns x reduced modulo 2^32 and reinterpreted as a signed two's-complement int32. Values outside [-2^31, 2^31-1] wrap silently with no exception.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -151,7 +155,8 @@ "bigintToInt64(x) returns x reduced modulo 2^64 and reinterpreted as a signed two's-complement int64. Values outside [-2^63, 2^63-1] wrap silently with no exception.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -177,7 +182,8 @@ "bigintToInt8(x) returns x reduced modulo 2^8 and reinterpreted as a signed two's-complement int8. Values outside [-128, 127] wrap silently with no exception.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -203,7 +209,8 @@ "bigintToUint16(x) returns x reduced modulo 2^16 as an unsigned uint16. Values outside [0, 2^16-1] wrap silently with no exception.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -229,7 +236,8 @@ "bigintToUint32(x) returns x reduced modulo 2^32 as an unsigned uint32. Values outside [0, 2^32-1] wrap silently with no exception.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -255,7 +263,8 @@ "bigintToUint64(x) returns x reduced modulo 2^64 as an unsigned uint64. Values outside [0, 2^64-1] wrap silently with no exception.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -281,7 +290,8 @@ "bigintToUint8(x) returns x reduced modulo 2^8 as an unsigned uint8. Values outside [0, 255] wrap silently with no exception.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -307,7 +317,8 @@ "binaryToBase64(b) encodes the bytes of b using standard base64 (RFC 4648) and returns the result as an ASCII string.", "Total and round-trippable: base64ToBinary(binaryToBase64(b)) is b for every binary value. Use this to embed arbitrary binary data in a string context (e.g. a JSON value). For interpreting bytes as text, use hydra.lib.text.decodeUtf8 instead."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -334,7 +345,8 @@ "The result list element type is int32 rather than uint8 because Hydra's primitive collections work most naturally with int32 indices.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -360,7 +372,8 @@ "decimalToBigint(x) returns x truncated toward zero. Fractional parts are discarded.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -386,7 +399,8 @@ "decimalToFloat32(x) returns the IEEE 754 binary32 value closest to x under roundTiesToEven. Values outside the float32 representable range overflow to \177\8734. Subnormal precision loss is silent.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -412,7 +426,8 @@ "decimalToFloat64(x) returns the IEEE 754 binary64 value closest to x under roundTiesToEven. Values outside the float64 representable range overflow to \177\8734. Subnormal precision loss is silent.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -438,7 +453,8 @@ "float32ToDecimal(x) returns the exact decimal representation of the binary32 value x. Special float32 values (\177\8734, NaN) have a host-defined decimal representation; finite values convert exactly since binary32 values are dyadic rationals.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -464,7 +480,8 @@ "float32ToFloat64(x) returns the binary64 value with the same numeric value as x; \177\8734 and NaN pass through. The conversion is exact and lossless.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -490,7 +507,8 @@ "float64ToDecimal(x) returns the exact decimal representation of the binary64 value x. Special float64 values (\177\8734, NaN) have a host-defined decimal representation; finite values convert exactly since binary64 values are dyadic rationals.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -516,7 +534,8 @@ "float64ToFloat32(x) returns the binary32 value closest to x under roundTiesToEven. Values outside the binary32 range overflow to \177\8734; subnormal precision loss is silent; NaN payload may be canonicalized by the host.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -542,7 +561,8 @@ "int16ToBigint(x) returns the bigint with the same numeric value as x. The conversion is exact and lossless.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -568,7 +588,8 @@ "int32ToBigint(x) returns the bigint with the same numeric value as x. The conversion is exact and lossless.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -594,7 +615,8 @@ "int64ToBigint(x) returns the bigint with the same numeric value as x. The conversion is exact and lossless.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -620,7 +642,8 @@ "int8ToBigint(x) returns the bigint with the same numeric value as x. The conversion is exact and lossless.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -647,7 +670,8 @@ "Accepted syntax follows the Haskell Show/Read convention: an optional leading minus sign followed by a sequence of decimal digits. Whitespace is not stripped; leading or trailing whitespace causes parse failure.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -673,7 +697,8 @@ "parseBoolean(s) returns Just(true) for \"true\", Just(false) for \"false\", and Nothing for any other input (including \"True\"/\"False\" with capital initial letter on some hosts; behavior on capitalized forms is host-defined and should not be relied upon).", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -700,7 +725,8 @@ "Accepted syntax is the standard decimal literal: an optional sign, an integer part, an optional fractional part, and an optional exponent (e.g. -1.5, 2e10, 0.0).", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -727,7 +753,8 @@ "Accepted special-value literals (\"NaN\", \"Infinity\", \"-Infinity\", etc.) and their capitalization are host-defined.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -754,7 +781,8 @@ "Accepted special-value literals (\"NaN\", \"Infinity\", \"-Infinity\", etc.) and their capitalization are host-defined.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -780,7 +808,8 @@ "parseInt16(s) returns Just(x) where x is the int16 parsed from s, or Nothing if s is not a valid integer literal or the parsed value is outside [-2^15, 2^15-1].", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -806,7 +835,8 @@ "parseInt32(s) returns Just(x) where x is the int32 parsed from s, or Nothing if s is not a valid integer literal or the parsed value is outside [-2^31, 2^31-1].", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -832,7 +862,8 @@ "parseInt64(s) returns Just(x) where x is the int64 parsed from s, or Nothing if s is not a valid integer literal or the parsed value is outside [-2^63, 2^63-1].", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -858,7 +889,8 @@ "parseInt8(s) returns Just(x) where x is the int8 parsed from s, or Nothing if s is not a valid integer literal or the parsed value is outside [-128, 127].", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -884,7 +916,8 @@ "parseString(s) parses s as a Haskell-syntax string literal token: an opening double-quote, escaped characters per the Haskell lexical grammar (backslash escapes for special characters and Unicode code points), and a closing double-quote. Returns Just of the decoded payload on success or Nothing on malformed input.", "Total. The inverse of printString."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -910,7 +943,8 @@ "parseUint16(s) returns Just(x) where x is the uint16 parsed from s, or Nothing if s is not a valid non-negative integer literal or the parsed value is outside [0, 2^16-1].", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -936,7 +970,8 @@ "parseUint32(s) returns Just(x) where x is the uint32 parsed from s, or Nothing if s is not a valid non-negative integer literal or the parsed value is outside [0, 2^32-1].", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -962,7 +997,8 @@ "parseUint64(s) returns Just(x) where x is the uint64 parsed from s, or Nothing if s is not a valid non-negative integer literal or the parsed value is outside [0, 2^64-1].", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -988,7 +1024,8 @@ "parseUint8(s) returns Just(x) where x is the uint8 parsed from s, or Nothing if s is not a valid non-negative integer literal or the parsed value is outside [0, 255].", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1014,7 +1051,8 @@ "printBigint(x) returns the canonical decimal representation of x: an optional leading minus sign followed by decimal digits. No leading zeros are produced (except for the value 0 itself, which renders as \"0\").", "Total. The inverse of parseBigint."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1040,7 +1078,8 @@ "printBoolean(true) = \"true\"; printBoolean(false) = \"false\".", "Total. The inverse of parseBoolean."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1066,7 +1105,8 @@ "printDecimal(x) returns the canonical decimal representation of x as a string. The exact form (use of scientific notation, trailing zeros, etc.) is host-defined but always round-trips with parseDecimal.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1092,7 +1132,8 @@ "printFloat32(x) returns a string representation of x. Finite values use the shortest decimal that round-trips through parseFloat32 back to x. Special values render as \"NaN\", \"Infinity\", or \"-Infinity\" (capitalization is host-defined).", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1118,7 +1159,8 @@ "printFloat64(x) returns a string representation of x. Finite values use the shortest decimal that round-trips through parseFloat64 back to x. Special values render as \"NaN\", \"Infinity\", or \"-Infinity\" (capitalization is host-defined).", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1144,7 +1186,8 @@ "printInt16(x) returns the canonical decimal representation of x: an optional leading minus sign followed by decimal digits.", "Total. The inverse of parseInt16."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1170,7 +1213,8 @@ "printInt32(x) returns the canonical decimal representation of x: an optional leading minus sign followed by decimal digits.", "Total. The inverse of parseInt32."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1196,7 +1240,8 @@ "printInt64(x) returns the canonical decimal representation of x: an optional leading minus sign followed by decimal digits.", "Total. The inverse of parseInt64."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1222,7 +1267,8 @@ "printInt8(x) returns the canonical decimal representation of x: an optional leading minus sign followed by decimal digits.", "Total. The inverse of parseInt8."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1248,7 +1294,8 @@ "printString(s) returns a Haskell-syntax string literal token representing s: an opening double-quote, the characters of s with special characters escaped (backslash sequences for control characters, quotes, and non-printable Unicode code points), and a closing double-quote.", "Total. The inverse of parseString."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1274,7 +1321,8 @@ "printUint16(x) returns the canonical decimal representation of x.", "Total. The inverse of parseUint16."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1300,7 +1348,8 @@ "printUint32(x) returns the canonical decimal representation of x.", "Total. The inverse of parseUint32."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1326,7 +1375,8 @@ "printUint64(x) returns the canonical decimal representation of x.", "Total. The inverse of parseUint64."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1352,7 +1402,8 @@ "printUint8(x) returns the canonical decimal representation of x.", "Total. The inverse of parseUint8."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1378,7 +1429,8 @@ "uint16ToBigint(x) returns the bigint with the same numeric value as x. The conversion is exact and lossless.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1404,7 +1456,8 @@ "uint32ToBigint(x) returns the bigint with the same numeric value as x. The conversion is exact and lossless.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1430,7 +1483,8 @@ "uint64ToBigint(x) returns the bigint with the same numeric value as x. The conversion is exact and lossless.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1456,7 +1510,8 @@ "uint8ToBigint(x) returns the bigint with the same numeric value as x. The conversion is exact and lossless.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [
src/main/haskell/Hydra/Lib/Logic.hs view
@@ -48,7 +48,8 @@ "Evaluation is strict in both arguments at the primitive level; for short-circuiting behavior, use ifElse.", "Total. Corresponds to Haskell's (&&) :: Bool -> Bool -> Bool (but without short-circuit evaluation)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -92,7 +93,8 @@ "The unselected branch is not necessarily evaluated; ifElse is the standard way to express short-circuiting boolean logic and branching in Hydra.", "Total. Corresponds to Haskell's if/then/else."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -131,7 +133,8 @@ "not(p) returns false if p is true, or true if p is false.", "Total. Corresponds to Haskell's not :: Bool -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -167,7 +170,8 @@ "Evaluation is strict in both arguments at the primitive level; for short-circuiting behavior, use ifElse.", "Total. Corresponds to Haskell's (||) :: Bool -> Bool -> Bool (but without short-circuit evaluation)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [
src/main/haskell/Hydra/Lib/Maps.hs view
@@ -49,7 +49,8 @@ "Requires an 'ordering' constraint on the key type.", "Total. Corresponds to Haskell's Data.Map.alter :: Ord k => (Maybe v -> Maybe v) -> k -> Map k v -> Map k v."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -134,7 +135,8 @@ "Requires 'ordering' constraints on both the input and output key types.", "Total. Corresponds to a key-and-value lift of Haskell's Data.Map.fromList . map (\\(k,v) -> (fk k, fv v)) . toList."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -223,7 +225,8 @@ "Requires an 'ordering' constraint on the key type.", "Total. Corresponds to Haskell's Data.Map.delete :: Ord k => k -> Map k v -> Map k v."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -267,7 +270,8 @@ "Requires an 'ordering' constraint on the key type.", "Total. Corresponds to Haskell's Data.Map.difference :: Ord k => Map k v -> Map k v -> Map k v."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -312,7 +316,8 @@ "Requires an 'ordering' constraint on the key type.", "Total. Corresponds to Haskell's Data.Map.elems :: Map k v -> [v]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -348,7 +353,8 @@ "Requires an 'ordering' constraint on the key type.", "Total. Corresponds to Haskell's Data.Map.empty :: Map k v."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -379,7 +385,8 @@ "Requires an 'ordering' constraint on the key type.", "Total. Corresponds to Haskell's Data.Map.filter :: (v -> Bool) -> Map k v -> Map k v."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -445,7 +452,8 @@ "Requires an 'ordering' constraint on the key type.", "Total. Corresponds to Haskell's Data.Map.filterWithKey :: (k -> v -> Bool) -> Map k v -> Map k v."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -517,7 +525,8 @@ "Requires an 'ordering' constraint on the key type.", "Total. Corresponds to Haskell's Data.Map.findWithDefault :: Ord k => v -> k -> Map k v -> v."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -580,7 +589,8 @@ "Requires an 'ordering' constraint on the key type.", "Total. Corresponds to Haskell's Data.Map.fromList :: Ord k => [(k, v)] -> Map k v."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -618,7 +628,8 @@ "Requires an 'ordering' constraint on the key type.", "Total. Corresponds to Haskell's Data.Map.insert :: Ord k => k -> v -> Map k v -> Map k v."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -667,7 +678,8 @@ "Requires an 'ordering' constraint on the key type.", "Total. Corresponds to Haskell's Data.Map.intersection :: Ord k => Map k v -> Map k v -> Map k v."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -712,7 +724,8 @@ "Requires an 'ordering' constraint on the key type.", "Total. Corresponds to Haskell's Data.Map.null :: Map k v -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -748,7 +761,8 @@ "Requires an 'ordering' constraint on the key type.", "Total. Corresponds to Haskell's Data.Map.keys :: Map k v -> [k]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -784,7 +798,8 @@ "Requires an 'ordering' constraint on the key type.", "Total. Corresponds to Haskell's Data.Map.lookup :: Ord k => k -> Map k v -> Maybe v."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -825,7 +840,8 @@ "Requires an 'ordering' constraint on the key type.", "Total. Corresponds to Haskell's Data.Map.map :: (v -> w) -> Map k v -> Map k w / fmap on Map."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -898,7 +914,8 @@ "Requires 'ordering' constraints on both the input and output key types.", "Total. Corresponds to Haskell's Data.Map.mapKeys :: (Ord k1, Ord k2) => (k1 -> k2) -> Map k1 v -> Map k2 v."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -972,7 +989,8 @@ "Requires an 'ordering' constraint on the key type.", "Total. Corresponds to Haskell's Data.Map.member :: Ord k => k -> Map k v -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1013,7 +1031,8 @@ "Requires an 'ordering' constraint on the key type.", "Total. Corresponds to Haskell's Data.Map.singleton :: k -> v -> Map k v."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1054,7 +1073,8 @@ "Requires an 'ordering' constraint on the key type.", "Total. Corresponds to Haskell's Data.Map.size :: Map k v -> Int (with narrowing to int32)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1090,7 +1110,8 @@ "Requires an 'ordering' constraint on the key type.", "Total. Corresponds to Haskell's Data.Map.toList :: Map k v -> [(k, v)]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1128,7 +1149,8 @@ "Requires an 'ordering' constraint on the key type.", "Total. Corresponds to Haskell's Data.Map.union :: Ord k => Map k v -> Map k v -> Map k v."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1174,7 +1196,8 @@ "Requires an 'ordering' constraint on the key type.", "Total. Corresponds to Haskell's Data.Map.unions :: Ord k => [Map k v] -> Map k v."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {
src/main/haskell/Hydra/Lib/Math.hs view
@@ -48,7 +48,8 @@ "Requires a 'numeric' type-class constraint on the argument type.", "Corresponds to Haskell's abs :: Num a => a -> a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -79,7 +80,8 @@ "For arguments outside the domain [-1, +1] (including \177\8734), the result is NaN. acos(NaN) is NaN.", "Corresponds to the IEEE 754 \2681.2 acos operation and to Haskell's acos :: Double -> Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -106,7 +108,8 @@ "For arguments less than 1 the result is NaN; acosh(1) = +0; acosh(+\8734) = +\8734; acosh(NaN) is NaN.", "Corresponds to the IEEE 754 \2681.2 acosh operation and to Haskell's acosh :: Double -> Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -133,7 +136,8 @@ "Requires a 'numeric' type-class constraint on the argument type, which is the closest Hydra equivalent to Haskell's Num instance.", "The operation is total. Corresponds to Haskell's (+) :: Num a => a -> a -> a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -172,7 +176,8 @@ Packaging.entityMetadataSeeAlso = [], Packaging.entityMetadataLifecycle = (Just (Packaging.LifecycleInfo { Packaging.lifecycleInfoAvailableSince = Nothing,- Packaging.lifecycleInfoDeprecatedSince = (Just (Packaging.Version "0.18"))}))})),+ Packaging.lifecycleInfoDeprecatedSince = (Just (Packaging.Version "0.18"))})),+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -204,7 +209,8 @@ "For arguments outside the domain [-1, +1] (including \177\8734), the result is NaN; asin(\2832) = \2832; asin(NaN) is NaN.", "Corresponds to the IEEE 754 \2681.2 asin operation and to Haskell's asin :: Double -> Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -230,7 +236,8 @@ "Principal value of the inverse hyperbolic sine. Defined for all finite reals; asinh(\2832) = \2832; asinh(\177\8734) = \177\8734; asinh(NaN) is NaN.", "Corresponds to the IEEE 754 \2681.2 asinh operation and to Haskell's asinh :: Double -> Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -256,7 +263,8 @@ "Principal value of the inverse tangent, in radians. The result is in (-\960/2, +\960/2); atan(\2832) = \2832; atan(\177\8734) = \177\960/2; atan(NaN) is NaN.", "Corresponds to the IEEE 754 \2681.2 atan operation and to Haskell's atan :: Double -> Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -283,7 +291,8 @@ "Special match follow IEEE 754 \2681.2: atan2(\2832, +x>0) = \2832; atan2(\2832, -x<0) = \177\960; atan2(\177y>0, 0) = \177\960/2; atan2(\177y, +\8734) = \2832; atan2(\177y, -\8734) = \177\960; atan2(\177\8734, finite) = \177\960/2; atan2(\177\8734, +\8734) = \177\960/4; atan2(\177\8734, -\8734) = \2835\960/4; atan2 of any NaN argument is NaN.", "Corresponds to Haskell's atan2 :: Double -> Double -> Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -314,7 +323,8 @@ "Principal value of the inverse hyperbolic tangent. Defined for arguments in (-1, +1); atanh(\2833) = \177\8734 (with division-by-zero exception in IEEE 754); arguments outside [-1, +1] produce NaN; atanh(\2832) = \2832; atanh(NaN) is NaN.", "Corresponds to the IEEE 754 \2681.2 atanh operation and to Haskell's atanh :: Double -> Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -341,7 +351,8 @@ "Note that the return type is float64, not an integer type, so the result can exceed the integer range.", "Corresponds to Haskell's fromIntegral . ceiling :: Double -> Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -367,7 +378,8 @@ "Cosine of an angle in radians, correctly rounded for finite arguments. The result is in [-1, +1]; cos(\2832) = 1; cos(\177\8734) is NaN (with invalid-operation exception in IEEE 754); cos(NaN) is NaN.", "Corresponds to the IEEE 754 \2681.2 cos operation and to Haskell's cos :: Double -> Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -393,7 +405,8 @@ "Hyperbolic cosine. The result is in [1, +\8734]; cosh(\2832) = 1; cosh(\177\8734) = +\8734; cosh(NaN) is NaN. Large-magnitude arguments overflow to +\8734.", "Corresponds to the IEEE 754 \2681.2 cosh operation and to Haskell's cosh :: Double -> Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -422,7 +435,8 @@ "Requires an 'integral' type-class constraint on the argument type.", "Corresponds to Haskell's div :: Integral a => a -> a -> a, wrapped in maybe to make the zero-divisor case total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -459,7 +473,8 @@ "Requires a 'fractional' type-class constraint on the argument type.", "Corresponds to Haskell's (/) :: Fractional a => a -> a -> a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -494,7 +509,8 @@ "The mathematical constant e \8776 2.718281828459045, the base of the natural logarithm, as the nearest representable float64. Equal to exp(1).", "Corresponds to Haskell's exp 1 :: Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [],@@ -517,7 +533,8 @@ "Requires an 'integral' type-class constraint on the argument type.", "Corresponds to Haskell's even :: Integral a => a -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -547,7 +564,8 @@ "The exponential function: exp(x) = e^x. exp(\2832) = 1; exp(-\8734) = +0; exp(+\8734) = +\8734; exp(NaN) is NaN. Large positive arguments overflow to +\8734; large negative arguments underflow to +0.", "Corresponds to the IEEE 754 \2681.2 exp operation and to Haskell's exp :: Double -> Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -574,7 +592,8 @@ "Note that the return type is float64, not an integer type, so the result can exceed the integer range.", "Corresponds to Haskell's fromIntegral . floor :: Double -> Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -600,7 +619,8 @@ "The natural (base-e) logarithm. log(1) = +0; log(+0) = log(-0) = -\8734 (with division-by-zero exception in IEEE 754); log(x) for x < 0 is NaN (with invalid-operation exception); log(+\8734) = +\8734; log(NaN) is NaN.", "Corresponds to the IEEE 754 \2681.2 log operation and to Haskell's log :: Double -> Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -627,7 +647,8 @@ "Inherits the special-case behavior of log for each argument (NaN propagation, sign of zeros, division by zero on log of a zero, NaN on negative arguments).", "Corresponds to Haskell's logBase :: Double -> Double -> Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -660,7 +681,8 @@ "Requires an 'integral' type-class constraint on the argument type.", "Corresponds to Haskell's mod :: Integral a => a -> a -> a, wrapped in maybe to make the zero-divisor case total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -696,7 +718,8 @@ "Requires a 'numeric' type-class constraint on the argument type.", "The operation is total. Corresponds to Haskell's (*) :: Num a => a -> a -> a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -735,7 +758,8 @@ Packaging.entityMetadataSeeAlso = [], Packaging.entityMetadataLifecycle = (Just (Packaging.LifecycleInfo { Packaging.lifecycleInfoAvailableSince = Nothing,- Packaging.lifecycleInfoDeprecatedSince = (Just (Packaging.Version "0.18"))}))})),+ Packaging.lifecycleInfoDeprecatedSince = (Just (Packaging.Version "0.18"))})),+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -767,7 +791,8 @@ "Requires a 'numeric' type-class constraint on the argument type.", "Corresponds to Haskell's negate :: Num a => a -> a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -800,7 +825,8 @@ Packaging.entityMetadataSeeAlso = [], Packaging.entityMetadataLifecycle = (Just (Packaging.LifecycleInfo { Packaging.lifecycleInfoAvailableSince = Nothing,- Packaging.lifecycleInfoDeprecatedSince = (Just (Packaging.Version "0.18"))}))})),+ Packaging.lifecycleInfoDeprecatedSince = (Just (Packaging.Version "0.18"))})),+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -827,7 +853,8 @@ "Total on all integral inputs including negative numbers and signed minBound. Requires an 'integral' type-class constraint on the argument type.", "Corresponds to Haskell's odd :: Integral a => a -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -864,7 +891,8 @@ "The mathematical constant \960 \8776 3.141592653589793, the ratio of a circle's circumference to its diameter, as the nearest representable float64.", "Corresponds to Haskell's pi :: Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [],@@ -886,7 +914,8 @@ "Follows the IEEE 754 \2681.2 pow operation: pow(\2832, y) for y < 0 is \177\8734 (with division-by-zero exception); pow(\2832, y) for y > 0 is \2832 if y is an odd integer, else +0; pow(1, y) = 1 for any y including NaN; pow(x, \2832) = 1 for any x including NaN; pow(x, y) for negative x and non-integer y is NaN (with invalid-operation exception); pow(\177\8734, y) follows the limits in the usual way. Otherwise the result is x^y rounded to the nearest representable float64.", "Corresponds to Haskell's (**) :: Double -> Double -> Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -917,7 +946,8 @@ "range(a, b) returns the list [a, a+1, ..., b-1]. The range is inclusive of the lower bound and exclusive of the upper bound; if a >= b the result is the empty list (i.e. the range does not count downward, and an empty range is the natural result of equal bounds). The length of the result is max(0, b - a).", "Does not directly correspond to Haskell's enumFromTo :: Int32 -> Int32 -> [Int32] (which is inclusive of both bounds, i.e. [a..b]); range(a, b) is equivalent to [a .. b-1]. This matches the half-open convention of Python's range, Rust's a..b, Go, and Java's IntStream.range."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -951,7 +981,8 @@ "Requires an 'integral' type-class constraint on the argument type.", "Corresponds to Haskell's rem :: Integral a => a -> a -> a, wrapped in maybe to make the zero-divisor case total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -987,7 +1018,8 @@ "Note that the return type is float64, not an integer type, so the result can exceed the integer range.", "Corresponds to Haskell's fromIntegral . round :: Double -> Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1014,7 +1046,8 @@ "Special values pass through: roundFloat32(n, \2832) = \2832; roundFloat32(n, \177\8734) = \177\8734; roundFloat32(n, NaN) is NaN.", "Negative n is supported in principle (rounding to powers of ten above 1); host implementations may differ on out-of-range n."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1046,7 +1079,8 @@ "Special values pass through: roundFloat64(n, \2832) = \2832; roundFloat64(n, \177\8734) = \177\8734; roundFloat64(n, NaN) is NaN.", "Negative n is supported in principle (rounding to powers of ten above 1); host implementations may differ on out-of-range n."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1079,7 +1113,8 @@ "Requires a 'numeric' type-class constraint on the argument type.", "Corresponds to Haskell's signum :: Num a => a -> a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1109,7 +1144,8 @@ "Sine of an angle in radians, correctly rounded for finite arguments. The result is in [-1, +1]; sin(\2832) = \2832; sin(\177\8734) is NaN (with invalid-operation exception in IEEE 754); sin(NaN) is NaN.", "Corresponds to the IEEE 754 \2681.2 sin operation and to Haskell's sin :: Double -> Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1135,7 +1171,8 @@ "Hyperbolic sine. sinh(\2832) = \2832; sinh(\177\8734) = \177\8734; sinh(NaN) is NaN. Large-magnitude arguments overflow to \177\8734.", "Corresponds to the IEEE 754 \2681.2 sinh operation and to Haskell's sinh :: Double -> Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1162,7 +1199,8 @@ "sqrt(+0) = +0; sqrt(-0) = -0 (sign preserved); sqrt(x) for x < 0 (including -\8734) is NaN (with invalid-operation exception); sqrt(+\8734) = +\8734; sqrt(NaN) is NaN.", "Corresponds to the IEEE 754 \2677.4.1 squareRoot operation and to Haskell's sqrt :: Double -> Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1189,7 +1227,8 @@ "Requires a 'numeric' type-class constraint on the argument type.", "The operation is total. Corresponds to Haskell's (-) :: Num a => a -> a -> a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -1228,7 +1267,8 @@ Packaging.entityMetadataSeeAlso = [], Packaging.entityMetadataLifecycle = (Just (Packaging.LifecycleInfo { Packaging.lifecycleInfoAvailableSince = Nothing,- Packaging.lifecycleInfoDeprecatedSince = (Just (Packaging.Version "0.18"))}))})),+ Packaging.lifecycleInfoDeprecatedSince = (Just (Packaging.Version "0.18"))})),+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1259,7 +1299,8 @@ "Tangent of an angle in radians, correctly rounded for finite arguments. tan(\2832) = \2832; near odd multiples of \960/2 the result has large magnitude but remains finite (no exception is raised); tan(\177\8734) is NaN (with invalid-operation exception in IEEE 754); tan(NaN) is NaN.", "Corresponds to the IEEE 754 \2681.2 tan operation and to Haskell's tan :: Double -> Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1285,7 +1326,8 @@ "Hyperbolic tangent. The result is in [-1, +1]; tanh(\2832) = \2832; tanh(\177\8734) = \2833; tanh(NaN) is NaN.", "Corresponds to the IEEE 754 \2681.2 tanh operation and to Haskell's tanh :: Double -> Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -1312,7 +1354,8 @@ "Note that the return type is float64, not an integer type, so the result can exceed the integer range.", "Corresponds to Haskell's fromIntegral . truncate :: Double -> Double."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [
src/main/haskell/Hydra/Lib/Optionals.hs view
@@ -48,7 +48,8 @@ "The applicative apply for optionals; threads a function-in-context with a value-in-context.", "Total. Corresponds to Haskell's (<*>) :: Maybe (a -> b) -> Maybe a -> Maybe b."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -110,7 +111,8 @@ "The monadic bind for optionals; used to chain computations that may be absent.", "Total. Corresponds to Haskell's (>>=) :: Maybe a -> (a -> Maybe b) -> Maybe b."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -162,7 +164,8 @@ "If either f or the second stage produces none, the result is none.", "Total. Corresponds to Haskell's Kleisli composition for Maybe, (>=>) :: (a -> Maybe b) -> (b -> Maybe c) -> a -> Maybe c."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -227,7 +230,8 @@ "foldList(f, acc, xs) is lists.foldl(\\m y -> bind(m, \\x -> f(x, y)), given(acc), xs); this defining equation is the specification, and the default implementation.", "Total. Corresponds to a short-circuiting foldM specialised to Maybe."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -308,7 +312,8 @@ "The constructor for the present case of an optional value.", "Total. Corresponds to Haskell's Just :: a -> Maybe a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -337,7 +342,8 @@ "givens(xs) returns the list of contained values from given elements of xs, in original order; none elements are discarded.", "Total. Corresponds to Haskell's Data.Maybe.catMaybes :: [Maybe a] -> [a]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -394,7 +400,8 @@ "isGiven(m) returns true iff m is a given variant.", "Total. Corresponds to Haskell's Data.Maybe.isJust :: Maybe a -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -435,7 +442,8 @@ "isNone(m) returns true iff m is the none variant.", "Total. Corresponds to Haskell's Data.Maybe.isNothing :: Maybe a -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -477,7 +485,8 @@ "The functor instance for optionals.", "Total. Corresponds to Haskell's fmap :: (a -> b) -> Maybe a -> Maybe b."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -533,7 +542,8 @@ "mapList(f, xs) applies f to each element of xs. If every application yields given, the result is given of the list of contained values, in their original order. The result is none as soon as any application yields none.", "Total. Corresponds to Haskell's traverse :: (a -> Maybe b) -> [a] -> Maybe [b]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -615,7 +625,8 @@ Packaging.entityMetadataSeeAlso = [], Packaging.entityMetadataLifecycle = (Just (Packaging.LifecycleInfo { Packaging.lifecycleInfoAvailableSince = Nothing,- Packaging.lifecycleInfoDeprecatedSince = (Just (Packaging.Version "0.18"))}))})),+ Packaging.lifecycleInfoDeprecatedSince = (Just (Packaging.Version "0.18"))})),+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -667,7 +678,8 @@ "Requires 'ordering' constraints on both element types (the set type contract).", "Total. Corresponds to a traverse-style operation specialised to Set in the Maybe monad."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -760,7 +772,8 @@ "The fundamental eliminator for the optional type; every other primitive in this namespace can be derived from it. The optional value is the first argument, matching the convention for case-statement-like elimination.", "Total. Argument order is (m, def, f) rather than Haskell's maybe :: (def, f, m)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -804,7 +817,8 @@ "toList(m) returns [x] when m is given(x), and the empty list when m is none.", "Total. Corresponds to Haskell's Data.Maybe.maybeToList :: Maybe a -> [a]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -846,7 +860,8 @@ "withDefault(def, m) returns x when m is given(x), and def when m is none.", "Total. Corresponds to Haskell's Data.Maybe.fromMaybe :: a -> Maybe a -> a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {
src/main/haskell/Hydra/Lib/Ordering.hs view
@@ -50,7 +50,8 @@ "Since: 0.18 (moved from hydra.lib.equality.compare).", "Total. Corresponds to Haskell's compare :: Ord a => a -> a -> Ordering."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -87,7 +88,8 @@ "Since: 0.18 (moved from hydra.lib.equality.gt).", "Total. Corresponds to Haskell's (>) :: Ord a => a -> a -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -124,7 +126,8 @@ "Since: 0.18 (moved from hydra.lib.equality.gte).", "Total. Corresponds to Haskell's (>=) :: Ord a => a -> a -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -161,7 +164,8 @@ "Since: 0.18 (moved from hydra.lib.equality.lt).", "Total. Corresponds to Haskell's (<) :: Ord a => a -> a -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -198,7 +202,8 @@ "Since: 0.18 (moved from hydra.lib.equality.lte).", "Total. Corresponds to Haskell's (<=) :: Ord a => a -> a -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -235,7 +240,8 @@ "Since: 0.18 (moved from hydra.lib.equality.max).", "Total. Corresponds to Haskell's max :: Ord a => a -> a -> a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -288,7 +294,8 @@ "Since: 0.18 (moved from hydra.lib.equality.min).", "Total. Corresponds to Haskell's min :: Ord a => a -> a -> a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {
src/main/haskell/Hydra/Lib/Pairs.hs view
@@ -47,7 +47,8 @@ "bimap(f, g, p) returns a new pair (f(first(p)), g(second(p))). The bifunctor map for pairs.", "Total. Corresponds to Haskell's Data.Bifunctor.bimap :: (a -> c) -> (b -> d) -> (a, b) -> (c, d)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -122,7 +123,8 @@ "first(p) returns the first component of the pair p.", "Total. Corresponds to Haskell's fst :: (a, b) -> a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -157,7 +159,8 @@ "The type-free pair constructor, useful point-free (e.g. zipWith(pair, xs, ys)).", "Total. Corresponds to Haskell's (,) :: a -> b -> (a, b)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -196,7 +199,8 @@ "second(p) returns the second component of the pair p.", "Total. Corresponds to Haskell's snd :: (a, b) -> b."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {
src/main/haskell/Hydra/Lib/Regex.hs view
@@ -48,7 +48,8 @@ "Regex syntax is host-defined; behavior tends to converge on the intersection of ECMA-262 and POSIX-ERE features (literal characters, character classes, alternation, anchors ^ and $, repetition with ?/*/+/{n,m}, grouping with parentheses), but extension features (lookaround, backreferences, Unicode property classes, named groups, engine-specific flags) vary widely. For portable code, restrict patterns to the common subset.", "Total in the sense that no error is raised at the kernel level; behavior on an ill-formed pattern is host-defined."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -80,7 +81,8 @@ "Regex syntax is host-defined; see find for the common-subset caveat.", "Total; ill-formed patterns are host-defined."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -112,7 +114,8 @@ "Regex syntax is host-defined; see find for the common-subset caveat.", "Total; ill-formed patterns are host-defined."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -145,7 +148,8 @@ "Regex syntax is host-defined; see find for the common-subset caveat.", "Total; ill-formed patterns and replacement strings are host-defined."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -182,7 +186,8 @@ "Replacement-string syntax is host-defined; see replace and find for the common-subset caveats.", "Total; ill-formed patterns and replacement strings are host-defined."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -220,7 +225,8 @@ "Regex syntax is host-defined; see find for the common-subset caveat.", "Total; ill-formed patterns are host-defined."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [
src/main/haskell/Hydra/Lib/Sets.hs view
@@ -48,7 +48,8 @@ "Requires an 'ordering' constraint on the element type.", "Total. Corresponds to Haskell's Data.Set.delete :: Ord a => a -> Set a -> Set a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -84,7 +85,8 @@ "Requires an 'ordering' constraint on the element type.", "Total. Corresponds to Haskell's Data.Set.difference :: Ord a => Set a -> Set a -> Set a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -154,7 +156,8 @@ "Requires an 'ordering' constraint on the element type.", "Total. Corresponds to Haskell's Data.Set.empty :: Set a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -180,7 +183,8 @@ "Requires an 'ordering' constraint on the element type.", "Total. Corresponds to Haskell's Data.Set.filter :: (a -> Bool) -> Set a -> Set a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -232,7 +236,8 @@ "Requires an 'ordering' constraint on the element type.", "Total. Corresponds to Haskell's Data.Set.fromList :: Ord a => [a] -> Set a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -263,7 +268,8 @@ "Requires an 'ordering' constraint on the element type.", "Total. Corresponds to Haskell's Data.Set.insert :: Ord a => a -> Set a -> Set a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -299,7 +305,8 @@ "Requires an 'ordering' constraint on the element type.", "Total. Corresponds to Haskell's Data.Set.intersection :: Ord a => Set a -> Set a -> Set a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -369,7 +376,8 @@ "Requires an 'ordering' constraint on the element type.", "Total. Corresponds to Haskell's Data.Set.null :: Set a -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -400,7 +408,8 @@ "Requires 'ordering' constraints on both the input and output element types.", "Total. Corresponds to Haskell's Data.Set.map :: (Ord a, Ord b) => (a -> b) -> Set a -> Set b."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -456,7 +465,8 @@ "Requires an 'ordering' constraint on the element type.", "Total. Corresponds to Haskell's Data.Set.member :: Ord a => a -> Set a -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -492,7 +502,8 @@ "Requires an 'ordering' constraint on the element type.", "Total. Corresponds to Haskell's Data.Set.singleton :: a -> Set a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -523,7 +534,8 @@ "Requires an 'ordering' constraint on the element type.", "Total. Corresponds to Haskell's Data.Set.size :: Set a -> Int (with narrowing to int32)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -554,7 +566,8 @@ "Requires an 'ordering' constraint on the element type.", "Total. Corresponds to Haskell's Data.Set.toAscList :: Set a -> [a]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -585,7 +598,8 @@ "Requires an 'ordering' constraint on the element type.", "Total. Corresponds to Haskell's Data.Set.union :: Ord a => Set a -> Set a -> Set a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {@@ -645,7 +659,8 @@ "Requires an 'ordering' constraint on the element type.", "Total. Corresponds to Haskell's Data.Set.unions :: Ord a => [Set a] -> Set a."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [ Typing.TypeParameter {
src/main/haskell/Hydra/Lib/Strings.hs view
@@ -47,7 +47,8 @@ "charAt(i, s) returns Just(c) where c is the Unicode code point at position i in s, or Nothing if i is negative or i >= length(s).", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -78,7 +79,8 @@ "concat(xs) returns the string formed by concatenating every string in xs in order.", "Total. Corresponds to Haskell's concat :: [String] -> String."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -104,7 +106,8 @@ "concat2(s, t) returns the concatenation of s and t.", "Total. Corresponds to Haskell's (++) :: String -> String -> String."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -136,7 +139,8 @@ "Code points outside the valid Unicode range [0, 0x10FFFF] yield a host-defined result (typically substitution with U+FFFD or truncation of the bits).", "Total. The inverse of toList."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -162,7 +166,8 @@ "isEmpty(s) returns true iff s is the empty string.", "Total. Corresponds to Haskell's null :: String -> Bool."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -188,7 +193,8 @@ "join(sep, xs) returns the strings in xs concatenated with sep inserted between each pair of adjacent strings; for the empty list the result is the empty string, and for a singleton list the result is the single string.", "Total. Corresponds to Haskell's Data.List.intercalate :: String -> [String] -> String."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -220,7 +226,8 @@ "Note: this is the code-point count, not the byte count or the grapheme-cluster count, so a four-byte UTF-8 character counts as one and an emoji built from multiple code points counts as the number of code points it uses.", "Total on strings shorter than 2^31-1 code points."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -247,7 +254,8 @@ "Behavior when sep is empty is host-defined and should not be relied upon.", "Total. Corresponds to Haskell's Data.List.Split.splitOn :: String -> String -> [String]."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -278,7 +286,8 @@ "toList(s) returns the list of Unicode code points making up s, in order. Each code point is represented as an int32.", "Total. The inverse of fromList."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -306,7 +315,8 @@ "For text intended for human-readable display in locales with non-trivial case mappings, prefer a host-specific full case-folding API.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -334,7 +344,8 @@ "For text intended for human-readable display in locales with non-trivial case mappings, prefer a host-specific full case-folding API.", "Total."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [
src/main/haskell/Hydra/Lib/System.hs view
@@ -46,7 +46,8 @@ Packaging.entityMetadataComments = [ "execute(command) describes an effectful computation which runs the program described by command to completion and returns its result. This is the POSIX \"execute a command\" operation at the posix_spawn / system() altitude (https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_spawn.html, https://pubs.opengroup.org/onlinepubs/9799919799/functions/system.html): the child is spawned, Hydra waits for it (POSIX waitpid), and standard output and standard error are captured as raw bytes. Output is byte-oriented, with no character decoding or newline translation; decode it to text via hydra.lib.text.decodeUtf8. A child that runs and exits with a non-zero status (POSIX WEXITSTATUS) is returned as right(result) with that StatusCode, following the XCU section 2.8.2 exit-status convention. Only a failure to launch -- for example POSIX ENOENT, EACCES, or a bad working directory -- is returned as left(error). Unlike the shell system(), no intermediate shell is invoked; command.program is executed directly (as the execvp family does), so shell syntax in arguments is not interpreted."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -73,7 +74,8 @@ Packaging.entityMetadataComments = [ "exit(code) describes an effectful computation which terminates the current process immediately with the given status, exactly as the POSIX exit() function (XSH, https://pubs.opengroup.org/onlinepubs/9799919799/functions/exit.html). The status is reported to the parent through wait(); by the XCU section 2.8.2 convention, 0 denotes success and non-zero denotes failure. This computation does not return, so subsequent effects in a sequence are not performed."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -98,7 +100,8 @@ Packaging.entityMetadataComments = [ "getEnvironment describes an effectful computation which returns the entire environment of the current process -- the POSIX environment list environ (XBD section 8, Environment Variables, https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap08.html) -- as a map from variable name to value. POSIX represents each entry as a \"name=value\" string; this primitive splits each at the first '=' into an EnvironmentVariable key and a string value. This computation does not fail; an empty environment yields an empty map."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [],@@ -120,7 +123,8 @@ Packaging.entityMetadataComments = [ "getEnvironmentVariable(name) describes an effectful computation which returns the value of the environment variable name, or none if it is not present -- the POSIX getenv() function (XSH, https://pubs.opengroup.org/onlinepubs/9799919799/functions/getenv.html). A variable that is present but set to the empty string is returned as given(\"\"), distinct from the none that POSIX getenv signals with a null pointer. This computation does not fail."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -145,7 +149,8 @@ Packaging.entityMetadataComments = [ "getTime describes an effectful computation which returns the current wall-clock time as a Timespec (seconds and nanoseconds since the Unix Epoch) -- the POSIX clock_gettime() function with the CLOCK_REALTIME clock (XSH, https://pubs.opengroup.org/onlinepubs/9799919799/functions/clock_gettime.html). The actual resolution is implementation- and platform-defined and may be coarser than nanoseconds. As with CLOCK_REALTIME, the clock is not monotonic: it can jump or move backwards when the host's wall clock is adjusted. This computation does not fail."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [],@@ -165,7 +170,8 @@ Packaging.entityMetadataComments = [ "getWorkingDirectory describes an effectful computation which returns the absolute pathname of the current working directory -- the POSIX getcwd() function (XSH, https://pubs.opengroup.org/onlinepubs/9799919799/functions/getcwd.html) -- as a FilePath. A recoverable failure (for example POSIX EACCES, or the working directory having been removed) is returned as left(error); success is returned as right(path)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [],@@ -187,7 +193,8 @@ Packaging.entityMetadataComments = [ "readStdin describes an effectful computation which reads standard input (POSIX file descriptor 0) until end-of-file and returns the complete contents as raw bytes, with no character decoding or newline translation -- the POSIX read() function (XSH, https://pubs.opengroup.org/onlinepubs/9799919799/functions/read.html) applied repeatedly to fd 0 until it signals end-of-file. To interpret the result as text, decode it (e.g. via hydra.lib.text.decodeUtf8). A recoverable I/O failure is returned as left(error); success is returned as right(contents), including the empty byte string if stdin is closed or empty."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [],@@ -209,7 +216,8 @@ Packaging.entityMetadataComments = [ "writeStderr(bytes) describes an effectful computation which writes bytes to standard error (POSIX file descriptor 2), with no character encoding or newline translation -- the POSIX write() function (XSH, https://pubs.opengroup.org/onlinepubs/9799919799/functions/write.html) applied repeatedly to fd 2 until all bytes are written. To write text, encode it first (e.g. via hydra.lib.text.encodeUtf8). A recoverable I/O failure (for example a closed pipe, POSIX EPIPE) is returned as left(error); success is returned as right(unit)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -236,7 +244,8 @@ Packaging.entityMetadataComments = [ "writeStdout(bytes) describes an effectful computation which writes bytes to standard output (POSIX file descriptor 1), with no character encoding or newline translation -- the POSIX write() function (XSH, https://pubs.opengroup.org/onlinepubs/9799919799/functions/write.html) applied repeatedly to fd 1 until all bytes are written. To write text, encode it first (e.g. via hydra.lib.text.encodeUtf8). A recoverable I/O failure (for example a closed pipe, POSIX EPIPE) is returned as left(error); success is returned as right(unit)."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [
src/main/haskell/Hydra/Lib/Text.hs view
@@ -47,7 +47,8 @@ "decodeUtf8(bytes) attempts to interpret bytes as a UTF-8 encoded string. A byte sequence which is not valid UTF-8 yields left(message), where message is a host-provided description of the decoding failure; a successful decode yields right(text).", "Pairs with hydra.lib.files.readFile, which returns raw bytes."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [@@ -75,7 +76,8 @@ "encodeUtf8(text) returns the UTF-8 encoding of text as raw bytes. Total: every Hydra string is valid Unicode and therefore always encodes.", "Pairs with hydra.lib.files.writeFile, which expects raw bytes."], Packaging.entityMetadataSeeAlso = [],- Packaging.entityMetadataLifecycle = Nothing})),+ Packaging.entityMetadataLifecycle = Nothing,+ Packaging.entityMetadataProvisions = []})), Packaging.primitiveDefinitionSignature = Typing.TermSignature { Typing.termSignatureTypeParameters = [], Typing.termSignatureParameters = [
src/main/haskell/Hydra/Names.hs view
@@ -74,6 +74,14 @@ ":", local]))) +-- | Compose a provision's fully-qualified name from its enclosing entity's name and its local segment+composeProvisionName :: Core.Name -> String -> Core.Name+composeProvisionName entityName localName =+ Core.Name (Strings.concat [+ Core.unName entityName,+ ".",+ localName])+ -- | Generate a binding name for a derived function from a type/term name, given the category's namespace segments derivedBindingName :: [String] -> Bool -> Core.Name -> Core.Name derivedBindingName categoryPrefix alwaysDropFirst n =@@ -157,6 +165,14 @@ suffix, ".", (File.unFileExtension ext)])++-- | Convert a name to UPPER-DASHED display form, splitting on '.' and joining with '-'+nameToUpperDashed :: Core.Name -> String+nameToUpperDashed name =++ let parts =+ Lists.map (Formatting.convertCase Util.CaseConventionCamel Util.CaseConventionUpperDashed) (Strings.splitOn "." (Core.unName name))+ in (Strings.join "-" parts) -- | Type variable naming convention follows Haskell: t0, t1, etc. normalTypeVariable :: Int -> Core.Name
src/main/haskell/Hydra/Overlay/Haskell/Bootstrap.hs view
@@ -73,4 +73,4 @@ -- without data loss; a Nothing description yields no metadata. descriptionMetadata :: Maybe String -> Maybe EntityMetadata descriptionMetadata Nothing = Nothing-descriptionMetadata desc = Just (EntityMetadata desc [] [] Nothing)+descriptionMetadata desc = Just (EntityMetadata desc [] [] Nothing [])
src/main/haskell/Hydra/Overlay/Haskell/Dsl/Typed/Phantoms.hs view
@@ -451,7 +451,7 @@ Just m -> m { entityMetadataComments = L.concat [entityMetadataComments m, [useComment]], entityMetadataLifecycle = Just lifecycle}- Nothing -> EntityMetadata Nothing [useComment] [] (Just lifecycle)+ Nothing -> EntityMetadata Nothing [useComment] [] (Just lifecycle) [] -- | Define an impure primitive (no default implementation) within a module. -- Example: defineImpure = impurePrimitiveInModule module_@@ -504,7 +504,7 @@ -- long-form comments. Each comments element is one logical observation, kept distinct rather than concatenated. primitiveMetadata :: String -> [String] -> Maybe EntityMetadata primitiveMetadata description comments =- Just (EntityMetadata (Just description) comments [] Nothing)+ Just (EntityMetadata (Just description) comments [] Nothing []) -- | Convert a phantom-typed term definition to a primitive Definition, using the term body as the -- declarative default implementation.
src/main/haskell/Hydra/Overlay/Haskell/Dsl/Typed/Testing.hs view
@@ -13,7 +13,7 @@ effectfulTestCase, tag, testCaseEffectful, testCaseUniversal, testCaseWithMetadata, testCaseWithMetadataCase, testCaseWithMetadataDescription,- testCaseWithMetadataName, testCaseWithMetadataTags, testGroup,+ testCaseWithMetadataName, testCaseWithMetadataProvisions, testCaseWithMetadataTags, testGroup, universalTestCase, unTag) import Hydra.Kernel import Hydra.Error.Core (InvalidTermError)@@ -39,7 +39,6 @@ tag_disabled = Tag "disabled"-tag_disabledForMinimalInference = Tag "disabledForMinimalInference" tag_disabledForScala = Tag "disabledForScala" alphaConvertRef :: TypedTerm (Name -> Name -> Term -> Term)@@ -76,6 +75,12 @@ checkModuleNameConventionRef :: TypedTerm (Module -> Maybe InvalidModuleError) checkModuleNameConventionRef = TypedTerm $ TermVariable $ Name "hydra.validate.packaging.checkModuleNameConvention" +checkModulePartitionRef :: TypedTerm ([(String, [ModuleName])] -> [InvalidPackageError])+checkModulePartitionRef = TypedTerm $ TermVariable $ Name "hydra.validate.packaging.checkModulePartition"++checkNestedModuleNamesRef :: TypedTerm (Package -> Maybe InvalidPackageError)+checkNestedModuleNamesRef = TypedTerm $ TermVariable $ Name "hydra.validate.packaging.checkNestedModuleNames"+ checkPackageNameConventionRef :: TypedTerm (Package -> Maybe InvalidPackageError) checkPackageNameConventionRef = TypedTerm $ TermVariable $ Name "hydra.validate.packaging.checkPackageNameConvention" @@ -179,8 +184,40 @@ retype (TypedTerm t) = TypedTerm t isDisabled tcase = tag_disabled `L.elem` Testing.testCaseWithMetadataTags tcase-isDisabledForMinimalInference tcase = tag_disabledForMinimalInference `L.elem` Testing.testCaseWithMetadataTags tcase +-- | Idempotence test: infer the type of a term twice in succession (infer . infer), and assert that+-- the second pass reproduces the same elaborated term and type as the first. Both passes are already+-- normalized by 'inferTypeOf' (via 'finalizeInferredTerm'), so a plain string comparison of the two+-- (term, type scheme) pairs is sufficient -- no additional alpha-equivalence step is needed.+idempotenceCase :: AsTerm t Term => String -> [Tag] -> t -> TypedTerm TestCaseWithMetadata+idempotenceCase name tags term = testCaseWithMetadata (Phantoms.string name)+ (testCaseUniversal $ universalTestCase (retype secondPassDescription) (retype firstPassDescription))+ nothing (Phantoms.list $ tag . unTag <$> tags)+ where+ retype :: TypedTerm x -> TypedTerm String+ retype (TypedTerm t) = TypedTerm t++ infer1 = inferTypeOfRef @@ testContextRef @@ testGraphRef @@ (asTerm term)++ describeResult = Phantoms.lambda "result" (describeInferenceOutput+ (Pairs.first (Pairs.first (Phantoms.var "result")))+ (Pairs.second (Pairs.first (Phantoms.var "result"))))++ onFailure msg = Phantoms.lambda "e" (Strings.concat2 (Phantoms.string msg) (Phantoms.string "failed"))++ firstPassDescription = Eithers.either (onFailure "INFERENCE ERROR (pass 1): ") describeResult infer1++ secondPassDescription = Eithers.either (onFailure "INFERENCE ERROR (pass 1): ") (Phantoms.lambda "result"+ (Eithers.either (onFailure "INFERENCE ERROR (pass 2): ") describeResult+ (inferTypeOfRef @@ testContextRef @@ testGraphRef @@ Pairs.first (Pairs.first (Phantoms.var "result")))))+ infer1++ describeInferenceOutput :: TypedTerm Term -> TypedTerm TypeScheme -> TypedTerm String+ describeInferenceOutput t ts = Strings.concat $ Phantoms.list [+ showTermRef @@ t,+ Phantoms.string " :: ",+ showTypeSchemeRef @@ ts]+ inferTypeOfRef :: TypedTerm (InferenceContext -> Graph -> Term -> Either Error ((Term, TypeScheme), InferenceContext)) inferTypeOfRef = TypedTerm $ TermVariable $ Name "hydra.inference.inferTypeOf" @@ -459,11 +496,15 @@ testCaseUniversal = inject _TestCase _TestCase_universal testCaseWithMetadata :: TypedTerm String -> TypedTerm TestCase -> TypedTerm (Maybe String) -> TypedTerm [Tag] -> TypedTerm TestCaseWithMetadata-testCaseWithMetadata name tcase description tags = Phantoms.record _TestCaseWithMetadata [+testCaseWithMetadata name tcase description tags = testCaseWithMetadataAndProvisions name tcase description tags (list ([] :: [TypedTerm Name]))++testCaseWithMetadataAndProvisions :: TypedTerm String -> TypedTerm TestCase -> TypedTerm (Maybe String) -> TypedTerm [Tag] -> TypedTerm [Name] -> TypedTerm TestCaseWithMetadata+testCaseWithMetadataAndProvisions name tcase description tags provisions = Phantoms.record _TestCaseWithMetadata [ _TestCaseWithMetadata_name>>: name, _TestCaseWithMetadata_case>>: tcase, _TestCaseWithMetadata_description>>: description,- _TestCaseWithMetadata_tags>>: tags]+ _TestCaseWithMetadata_tags>>: tags,+ _TestCaseWithMetadata_provisions>>: provisions] testCaseWithMetadataCase :: TypedTerm (TestCaseWithMetadata -> TestCase) testCaseWithMetadataCase = Phantoms.project _TestCaseWithMetadata _TestCaseWithMetadata_case@@ -473,6 +514,9 @@ testCaseWithMetadataName :: TypedTerm (TestCaseWithMetadata -> String) testCaseWithMetadataName = Phantoms.project _TestCaseWithMetadata _TestCaseWithMetadata_name++testCaseWithMetadataProvisions :: TypedTerm (TestCaseWithMetadata -> [Name])+testCaseWithMetadataProvisions = Phantoms.project _TestCaseWithMetadata _TestCaseWithMetadata_provisions testCaseWithMetadataTags :: TypedTerm (TestCaseWithMetadata -> [Tag]) testCaseWithMetadataTags = Phantoms.project _TestCaseWithMetadata _TestCaseWithMetadata_tags
src/main/haskell/Hydra/Overlay/Haskell/Lib/Literals.hs view
@@ -23,9 +23,12 @@ bigintToInt16 :: Integer -> Int16 bigintToInt16 = fromIntegral --- | Convert a bigint (Integer) to an int32.+-- | Convert a bigint (Integer) to an int32. Result type is Int (not Int32) because+-- Hydra's Int32 term is represented natively as Int -- but Int is host-word-sized+-- (64-bit here), so narrow explicitly through the genuinely-32-bit Int32 type first+-- to get two's-complement wraparound, then widen back to Int. bigintToInt32 :: Integer -> Int-bigintToInt32 = fromIntegral+bigintToInt32 = fromIntegral . (fromIntegral :: Integer -> Int32) -- | Convert a bigint (Integer) to an int64. bigintToInt64 :: Integer -> Int64@@ -195,11 +198,43 @@ True -> "true" False -> "false" --- | Convert a decimal (Scientific) to string. Uses Scientific's default format--- (regular notation for small-magnitude values; scientific notation for very--- large or very small).+-- | Convert a decimal (Scientific) to its representation-faithful string, per+-- docs/specification/json-format.md (Decimal formatting) and syntax.md (§2.6):+-- coefficient digits -- trailing zeros included -- are preserved exactly, and+-- zero prints per its scale ("0", "0.0", "0.00"). Scientific's own Show+-- instance normalizes away trailing zeros (e.g. 1.10 and 1.1 both show as+-- "1.1"), which violates this, so the digit string is built directly from+-- the coefficient and scale instead.+-- Layout follows ECMAScript Number::toString / RFC 8785: positional form+-- when the adjusted exponent a satisfies -6 <= a < 21, exponent form+-- otherwise (one digit before the point, lowercase e, always-signed+-- exponent, coefficient digits preserved). printDecimal :: Scientific -> String-printDecimal = show+printDecimal x = sign ++ body+ where+ coeff = Sci.coefficient x+ scale = negate (Sci.base10Exponent x)+ sign = if coeff < 0 then "-" else ""+ digits = show (abs coeff)+ n = length digits+ -- Adjusted exponent: position of the leading significant digit.+ a = n - 1 - scale+ body+ | a >= (-6) && a < 21 = positional+ | otherwise = exponential+ -- Positional form: place the decimal point `scale` digits from the right,+ -- padding with zeros on either side as needed.+ positional+ | scale <= 0 = digits ++ replicate (negate scale) '0'+ | scale < n = let (intPart, fracPart) = splitAt (n - scale) digits in intPart ++ "." ++ fracPart+ | otherwise = "0." ++ replicate (scale - n) '0' ++ digits+ -- Exponent form: one digit before the point, remaining digits after,+ -- coefficient digits preserved (a trailing ".0" if there's only one digit).+ exponential = mantissa ++ "e" ++ (if a >= 0 then "+" else "") ++ show a+ where+ mantissa+ | n == 1 = digits ++ ".0"+ | otherwise = take 1 digits ++ "." ++ drop 1 digits -- | Convert a float32 (Float) to string. printFloat32 :: Float -> String
src/main/haskell/Hydra/Overlay/Haskell/Libraries.hs view
@@ -11,7 +11,6 @@ import qualified Hydra.Overlay.Haskell.Lib.Chars as Chars import qualified Hydra.Overlay.Haskell.Lib.Eithers as Eithers-import qualified Hydra.Overlay.Haskell.Lib.Equality as Equality import qualified Hydra.Overlay.Haskell.Lib.Functions as Functions import qualified Hydra.Overlay.Haskell.Lib.Hashing as Hashing import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists@@ -20,7 +19,6 @@ 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.Regex as Regex import qualified Hydra.Overlay.Haskell.Lib.Sets as Sets@@ -48,6 +46,9 @@ import qualified Hydra.Lib.Text as DefText import qualified Data.List as L+import qualified Data.Map as M+import qualified Data.Scientific as Sci+import qualified Data.Set as S -- Term coders for type variables (used in primitive implementations)@@ -146,20 +147,208 @@ prim1 DefEithers.right Eithers.right y_ (Prims.either_ x_ y_), prim1 DefEithers.rights Eithers.rights (list $ Prims.either_ x_ y_) (list y_)] +-- hydra.lib.equality.equal / hydra.lib.ordering.compare (+gt/gte/lt/lte/max/min) are+-- registered below at Term (x_ is the identity TermCoder), so termEqual/termCompare+-- special-case Literal.Decimal for scale-aware comparison per docs/specification/+-- ordering-and-equality.md, instead of using the generic Equality.equal/Ordering.compare+-- (which stay polymorphic Eq/Ord-constrained -- they're also called directly, at+-- non-Term types, by Haskell-generated-Haskell code elsewhere in the kernel, so they+-- must not be narrowed to Term).+--+-- Kernel-type DSL constructors (Hydra.Dsl.Core / Hydra.Overlay.Haskell.Dsl.Typed.Terms)+-- build hydra.core.Term/Literal values via the generic, reflective TermInject/Injection+-- encoding rather than the native Term/Literal ADT constructors directly -- e.g. a+-- decimal literal built via the DSL is+-- TermInject(Injection{"hydra.core.Term", Field{"literal",+-- TermInject(Injection{"hydra.core.Literal", Field{"decimal", <native TermLiteral+-- (LiteralDecimal sci)>}})}}).+-- No reduction/normalization step collapses this to the native shape before a primitive+-- runs (confirmed: Reduction.hs only beta-reduces/deannotates), so decimalPayload below+-- unwraps nested injections to find it.+decimalPayload :: Term -> Maybe Sci.Scientific+decimalPayload (TermLiteral (LiteralDecimal a)) = Just a+decimalPayload (TermInject (Injection _ (Field _ t))) = decimalPayload t+decimalPayload _ = Nothing++-- | Scale-aware comparison of two decimal payloads.+compareDecimals :: Sci.Scientific -> Sci.Scientific -> Ordering+compareDecimals a b+ | a < b = LT+ | a > b = GT+ -- Equal value; scale is -base10Exponent, so smaller scale is the larger+ -- (less negative) exponent.+ | ea > eb = LT+ | ea < eb = GT+ | otherwise = EQ+ where+ ea = Sci.base10Exponent a+ eb = Sci.base10Exponent b++-- | Extract a float payload as a Double, unwrapping the same DSL-injection shape+-- decimalPayload handles. Both Float32 and Float64 widen to Double for comparison,+-- matching the other hosts' float overlay comparators.+floatPayload :: Term -> Maybe Double+floatPayload (TermLiteral (LiteralFloat (FloatValueFloat32 f))) = Just (realToFrac f)+floatPayload (TermLiteral (LiteralFloat (FloatValueFloat64 d))) = Just d+floatPayload (TermInject (Injection _ (Field _ t))) = floatPayload t+floatPayload _ = Nothing++-- | IEEE 754 extended totalOrder comparison (docs/specification/ordering-and-equality.md):+-- NaN is greatest and equal to itself; -0.0 < +0.0. Native Haskell compare/== on+-- Double/Float disagree on both (NaN is unordered; -0.0 == 0.0).+compareFloats :: Double -> Double -> Ordering+compareFloats a b+ | aNaN || bNaN = if aNaN && bNaN then EQ else if aNaN then GT else LT+ | a < b = LT+ | a > b = GT+ | a == 0 && b == 0 = compare (isNegativeZero b) (isNegativeZero a)+ | otherwise = EQ+ where+ aNaN = isNaN a+ bNaN = isNaN b++-- | Structural comparison of two terms, per docs/specification/ordering-and-equality.md:+-- records compare field-by-field in declaration order, unions by declared-variant order+-- then payload (the derived Ord on Term/Literal/etc. already implements this via+-- constructor declaration order -- see Hydra.Core), decimals by numeric value then scale.+--+-- This is a full recursive walk (NOT a check of the top level only): decimalPayload above+-- only recognizes a decimal at the term's own top level (or one Injection layer above it,+-- for DSL-constructed literals) -- a decimal nested inside a Map/List/Set/Record/etc. is+-- invisible to it, so termCompareOrdering must recurse through every container-shaped Term+-- constructor and apply the decimal special-case at each leaf, falling back to the derived+-- Ord only for genuinely decimal-free subtrees (an optimization: once neither side contains+-- a decimal, derived Ord already agrees with structural comparison, since Scientific's Eq/Ord+-- is the only actual divergence point from the spec).+termCompareOrdering :: Term -> Term -> Ordering+termCompareOrdering x y+ | Just a <- decimalPayload x, Just b <- decimalPayload y = compareDecimals a b+ | Just a <- floatPayload x, Just b <- floatPayload y = compareFloats a b+ | otherwise = case (x, y) of+ (TermAnnotated (AnnotatedTerm bx ax), TermAnnotated (AnnotatedTerm by ay)) ->+ termCompareOrdering bx by <> termCompareOrdering ax ay+ (TermApplication (Application fx ax), TermApplication (Application fy ay)) ->+ termCompareOrdering fx fy <> termCompareOrdering ax ay+ (TermCases (CaseStatement tnx dx csx), TermCases (CaseStatement tny dy csy)) ->+ compare tnx tny <> compareMaybeTerm dx dy <> compareCaseAlternatives csx csy+ (TermEither ex, TermEither ey) -> case (ex, ey) of+ (Left lx, Left ly) -> termCompareOrdering lx ly+ (Right rx, Right ry) -> termCompareOrdering rx ry+ (Left _, Right _) -> LT+ (Right _, Left _) -> GT+ (TermInject (Injection tnx (Field fnx fvx)), TermInject (Injection tny (Field fny fvy))) ->+ compare tnx tny <> compare fnx fny <> termCompareOrdering fvx fvy+ (TermLambda (Lambda px dx bx), TermLambda (Lambda py dy by)) ->+ compare px py <> compare dx dy <> termCompareOrdering bx by+ (TermLet (Let bsx bx), TermLet (Let bsy by)) ->+ compareBindings bsx bsy <> termCompareOrdering bx by+ (TermList xs, TermList ys) -> compareTermLists xs ys+ (TermLiteral lx, TermLiteral ly) -> compare lx ly+ (TermMap mx, TermMap my) -> compareTermPairLists (M.toAscList mx) (M.toAscList my)+ (TermOptional mx, TermOptional my) -> case (mx, my) of+ (Nothing, Nothing) -> EQ+ (Nothing, Just _) -> LT+ (Just _, Nothing) -> GT+ (Just tx, Just ty) -> termCompareOrdering tx ty+ (TermPair (x1, x2), TermPair (y1, y2)) -> termCompareOrdering x1 y1 <> termCompareOrdering x2 y2+ (TermProject px, TermProject py) -> compare px py+ (TermRecord (Record tnx fsx), TermRecord (Record tny fsy)) ->+ compare tnx tny <> compareFields fsx fsy+ (TermSet sx, TermSet sy) -> compareTermLists (S.toAscList sx) (S.toAscList sy)+ (TermTypeApplication (TypeApplicationTerm bx tx), TermTypeApplication (TypeApplicationTerm by ty)) ->+ termCompareOrdering bx by <> compare tx ty+ (TermTypeLambda (TypeLambda px bx), TermTypeLambda (TypeLambda py by)) ->+ compare px py <> termCompareOrdering bx by+ (TermUnwrap nx, TermUnwrap ny) -> compare nx ny+ (TermVariable nx, TermVariable ny) -> compare nx ny+ -- Different variants, or a variant with no decimal-bearing substructure (TermUnit, or+ -- a mismatched-variant pair): the derived Ord already agrees with the spec's+ -- declared-variant-order-then-payload rule (constructor declaration order in+ -- Hydra.Core mirrors the DSL, and the payload itself was checked above for the+ -- same-variant cases that can carry a Term).+ _ -> compare x y+ where+ compareMaybeTerm Nothing Nothing = EQ+ compareMaybeTerm Nothing (Just _) = LT+ compareMaybeTerm (Just _) Nothing = GT+ compareMaybeTerm (Just a) (Just b) = termCompareOrdering a b+ compareTermLists [] [] = EQ+ compareTermLists [] (_:_) = LT+ compareTermLists (_:_) [] = GT+ compareTermLists (a:as) (b:bs) = termCompareOrdering a b <> compareTermLists as bs+ compareTermPairLists [] [] = EQ+ compareTermPairLists [] (_:_) = LT+ compareTermPairLists (_:_) [] = GT+ compareTermPairLists ((ka,va):as) ((kb,vb):bs) =+ termCompareOrdering ka kb <> termCompareOrdering va vb <> compareTermPairLists as bs+ compareFields [] [] = EQ+ compareFields [] (_:_) = LT+ compareFields (_:_) [] = GT+ compareFields (Field nax tax : as) (Field nbx tbx : bs) =+ compare nax nbx <> termCompareOrdering tax tbx <> compareFields as bs+ compareCaseAlternatives [] [] = EQ+ compareCaseAlternatives [] (_:_) = LT+ compareCaseAlternatives (_:_) [] = GT+ compareCaseAlternatives (CaseAlternative nax hax : as) (CaseAlternative nbx hbx : bs) =+ compare nax nbx <> termCompareOrdering hax hbx <> compareCaseAlternatives as bs+ compareBindings [] [] = EQ+ compareBindings [] (_:_) = LT+ compareBindings (_:_) [] = GT+ compareBindings (Binding nax tax tsax : as) (Binding nbx tbx tsbx : bs) =+ compare nax nbx <> termCompareOrdering tax tbx <> compare tsax tsbx <> compareBindings as bs++termEqual :: Term -> Term -> Bool+termEqual x y = termCompareOrdering x y == EQ++termNotEqual :: Term -> Term -> Bool+termNotEqual x y = not (termEqual x y)++termCompare :: Term -> Term -> Comparison+termCompare x y = case termCompareOrdering x y of+ LT -> ComparisonLessThan+ GT -> ComparisonGreaterThan+ EQ -> ComparisonEqualTo++termGt :: Term -> Term -> Bool+termGt x y = case termCompare x y of+ ComparisonGreaterThan -> True+ _ -> False++termGte :: Term -> Term -> Bool+termGte x y = case termCompare x y of+ ComparisonLessThan -> False+ _ -> True++termLt :: Term -> Term -> Bool+termLt x y = case termCompare x y of+ ComparisonLessThan -> True+ _ -> False++termLte :: Term -> Term -> Bool+termLte x y = case termCompare x y of+ ComparisonGreaterThan -> False+ _ -> True++termMax :: Term -> Term -> Term+termMax x y = if termGte x y then x else y++termMin :: Term -> Term -> Term+termMin x y = if termLte x y then x else y+ hydraLibEquality :: Library hydraLibEquality = standardLibrary [- prim2 DefEquality.equal Equality.equal x_ x_ boolean,- prim2 DefEquality.notEqual Equality.notEqual x_ x_ boolean]+ prim2 DefEquality.equal termEqual x_ x_ boolean,+ prim2 DefEquality.notEqual termNotEqual x_ x_ boolean] hydraLibOrdering :: Library hydraLibOrdering = standardLibrary [- prim2 DefOrdering.compare Ordering.compare x_ x_ comparison,- prim2 DefOrdering.gt Ordering.gt x_ x_ boolean,- prim2 DefOrdering.gte Ordering.gte x_ x_ boolean,- prim2 DefOrdering.lt Ordering.lt x_ x_ boolean,- prim2 DefOrdering.lte Ordering.lte x_ x_ boolean,- prim2 DefOrdering.max Ordering.max x_ x_ x_,- prim2 DefOrdering.min Ordering.min x_ x_ x_]+ prim2 DefOrdering.compare termCompare x_ x_ comparison,+ prim2 DefOrdering.gt termGt x_ x_ boolean,+ prim2 DefOrdering.gte termGte x_ x_ boolean,+ prim2 DefOrdering.lt termLt x_ x_ boolean,+ prim2 DefOrdering.lte termLte x_ x_ boolean,+ prim2 DefOrdering.max termMax x_ x_ x_,+ prim2 DefOrdering.min termMin x_ x_ x_] hydraLibFunctions :: Library hydraLibFunctions = standardLibrary [
src/main/haskell/Hydra/Packaging.hs view
@@ -68,7 +68,7 @@ _DependencyScope_tool = Core.Name "tool" --- | Documentation and lifecycle metadata attachable to a packaging entity (package, module, or definition). Bundling these fields in one type lets future metadata be added without changing the field shape of the entities that carry it.+-- | Documentation, lifecycle, and normative metadata attachable to a packaging entity (package, module, or definition). Bundling these fields in one type lets future metadata be added without changing the field shape of the entities that carry it. data EntityMetadata = EntityMetadata { -- | An optional, concise one-line human-readable summary of the entity.@@ -78,7 +78,9 @@ -- | Typed cross-references to related entities, for navigation and documentation. entityMetadataSeeAlso :: [EntityReference], -- | Optional version-lifecycle milestones for the entity.- entityMetadataLifecycle :: (Maybe LifecycleInfo)}+ entityMetadataLifecycle :: (Maybe LifecycleInfo),+ -- | Named normative provisions (requirements and recommendations) concerning this entity. Empty when the entity states none.+ entityMetadataProvisions :: [Provision]} deriving (Eq, Ord, Read, Show) _EntityMetadata = Core.Name "hydra.packaging.EntityMetadata"@@ -91,6 +93,8 @@ _EntityMetadata_lifecycle = Core.Name "lifecycle" +_EntityMetadata_provisions = Core.Name "provisions"+ -- | A typed reference to a Hydra entity: a package, a module, a definition (by name), or an inline type or term expression in Hydra textual syntax. data EntityReference = -- | A reference to a definition (type, term, or primitive), by name@@ -258,6 +262,39 @@ _PrimitiveDefinition_isTotal = Core.Name "isTotal" _PrimitiveDefinition_defaultImplementation = Core.Name "defaultImplementation"++-- | A named normative statement concerning an entity: a single falsifiable condition a conforming implementation is measured against. Tests reference provisions by name.+data Provision =+ Provision {+ -- | The fully-qualified name of the provision: the enclosing entity's name extended by one segment (e.g. hydra.lib.lists.concat.emptyLists). Composed at definition time by a helper that prefixes the entity's name, exactly as a definition's name is composed from its module's name -- so the author writes only the final segment, but the stored value is the full name.+ provisionName :: Core.Name,+ -- | Whether this provision is a requirement or a recommendation.+ provisionKind :: ProvisionKind,+ -- | The normative statement itself, as markdown prose: the falsifiable claim.+ provisionStatement :: String}+ deriving (Eq, Ord, Read, Show)++_Provision = Core.Name "hydra.packaging.Provision"++_Provision_name = Core.Name "name"++_Provision_kind = Core.Name "kind"++_Provision_statement = Core.Name "statement"++-- | Whether a provision is a requirement (a MUST: no deviation permitted for conformance) or a recommendation (a SHOULD: observed by the Hydra kernel, but a downstream project may opt out).+data ProvisionKind =+ -- | A requirement: no deviation is permitted if conformance is to be claimed (MUST).+ ProvisionKindRequirement |+ -- | A recommendation: observed strictly by the Hydra kernel and codebase, but a downstream project may opt out (SHOULD).+ ProvisionKindRecommendation+ deriving (Eq, Ord, Read, Show)++_ProvisionKind = Core.Name "hydra.packaging.ProvisionKind"++_ProvisionKind_requirement = Core.Name "requirement"++_ProvisionKind_recommendation = Core.Name "recommendation" -- | A term-level definition, including a name, an optional signature, and a term data TermDefinition =
src/main/haskell/Hydra/Paths.hs view
@@ -1,6 +1,6 @@ -- Note: this is an automatically generated file. Do not edit. --- | Subterm and subtype access, and the link view of a graph+-- | Subterm and subtype access, and the term/type graph view of a graph module Hydra.Paths where @@ -8,84 +8,86 @@ 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.Map as M --- | A link from a node to a non-term attribute of a position-data SubtermAttribute =- SubtermAttribute {- -- | The subterm path at which the attribute occurs- subtermAttributePath :: SubtermPath,- -- | The attribute value- subtermAttributeTarget :: TermAttribute}+-- | A reference to a lambda-bound variable: the node introducing it is the binding lambda+data LambdaVariableReference =+ LambdaVariableReference {+ -- | The name of the lambda-bound variable+ lambdaVariableReferenceVariable :: Core.Name,+ -- | The id of the node at the binding lambda+ lambdaVariableReferenceBoundByNode :: TermNodeId,+ -- | The type of the variable+ lambdaVariableReferenceType :: Core.Type} deriving (Eq, Ord, Read, Show) -_SubtermAttribute = Core.Name "hydra.paths.SubtermAttribute"+_LambdaVariableReference = Core.Name "hydra.paths.LambdaVariableReference" -_SubtermAttribute_path = Core.Name "path"+_LambdaVariableReference_variable = Core.Name "variable" -_SubtermAttribute_target = Core.Name "target"+_LambdaVariableReference_boundByNode = Core.Name "boundByNode" --- | A link from a node to another binding of the graph, addressed by the path at which it occurs-data SubtermEdge =- SubtermEdge {- -- | The subterm path at which the reference occurs- subtermEdgePath :: SubtermPath,- -- | The name of the referenced binding of the graph- subtermEdgeTarget :: Core.Name}+_LambdaVariableReference_type = Core.Name "type"++-- | A reference to a let-bound variable: the node introducing it is the bound term+data LetVariableReference =+ LetVariableReference {+ -- | The name of the let-bound variable+ letVariableReferenceVariable :: Core.Name,+ -- | The id of the node at the bound term+ letVariableReferenceBindingNode :: TermNodeId,+ -- | The type of the variable+ letVariableReferenceType :: Core.Type} deriving (Eq, Ord, Read, Show) -_SubtermEdge = Core.Name "hydra.paths.SubtermEdge"+_LetVariableReference = Core.Name "hydra.paths.LetVariableReference" -_SubtermEdge_path = Core.Name "path"+_LetVariableReference_variable = Core.Name "variable" -_SubtermEdge_target = Core.Name "target"+_LetVariableReference_bindingNode = Core.Name "bindingNode" --- | The link view of a graph as subterm nodes and their links-data SubtermGraph =- SubtermGraph {- -- | All nodes in the graph- subtermGraphNodes :: [SubtermNode]}+_LetVariableReference_type = Core.Name "type"++-- | A reference to a named type of the schema (analogous to a let-bound variable)+data NominalTypeReference =+ NominalTypeReference {+ -- | The name of the referenced schema type+ nominalTypeReferenceName :: Core.Name} deriving (Eq, Ord, Read, Show) -_SubtermGraph = Core.Name "hydra.paths.SubtermGraph"+_NominalTypeReference = Core.Name "hydra.paths.NominalTypeReference" -_SubtermGraph_nodes = Core.Name "nodes"+_NominalTypeReference_name = Core.Name "name" --- | An outgoing link of a subterm node: an edge, a property, or an attribute-data SubtermLink =- -- | A reference to another binding of the graph- SubtermLinkEdge SubtermEdge |- -- | A leaf term- SubtermLinkProperty SubtermProperty |- -- | A non-term attribute of a position- SubtermLinkAttribute SubtermAttribute+-- | A reference to a primitive function+data PrimitiveReference =+ PrimitiveReference {+ -- | The name of the primitive+ primitiveReferenceName :: Core.Name,+ -- | The type of the primitive+ primitiveReferenceType :: Core.Type} deriving (Eq, Ord, Read, Show) -_SubtermLink = Core.Name "hydra.paths.SubtermLink"--_SubtermLink_edge = Core.Name "edge"+_PrimitiveReference = Core.Name "hydra.paths.PrimitiveReference" -_SubtermLink_property = Core.Name "property"+_PrimitiveReference_name = Core.Name "name" -_SubtermLink_attribute = Core.Name "attribute"+_PrimitiveReference_type = Core.Name "type" --- | A node in a subterm graph: a binding of the graph, with its type scheme and outgoing links-data SubtermNode =- SubtermNode {- -- | The name of the binding- subtermNodeName :: Core.Name,- -- | The type scheme of the binding- subtermNodeType :: Core.TypeScheme,- -- | The outgoing links of the node- subtermNodeLinks :: [SubtermLink]}+-- | An outgoing link to an immediate subterm, carried inline as a child node+data SubtermLink =+ SubtermLink {+ -- | The step by which the child subterm is reached+ subtermLinkStep :: SubtermStep,+ -- | The child node (inline; the structure is a tree)+ subtermLinkChild :: TermNode} deriving (Eq, Ord, Read, Show) -_SubtermNode = Core.Name "hydra.paths.SubtermNode"--_SubtermNode_name = Core.Name "name"+_SubtermLink = Core.Name "hydra.paths.SubtermLink" -_SubtermNode_type = Core.Name "type"+_SubtermLink_step = Core.Name "step" -_SubtermNode_links = Core.Name "links"+_SubtermLink_child = Core.Name "child" -- | A sequence of subterm steps forming a path through a term, root first newtype SubtermPath =@@ -95,21 +97,6 @@ _SubtermPath = Core.Name "hydra.paths.SubtermPath" --- | A link from a node to a leaf term (literal, unit, projection, unwrap, or an unbound variable)-data SubtermProperty =- SubtermProperty {- -- | The subterm path at which the leaf term occurs- subtermPropertyPath :: SubtermPath,- -- | The leaf term- subtermPropertyTarget :: Core.Term}- deriving (Eq, Ord, Read, Show)--_SubtermProperty = Core.Name "hydra.paths.SubtermProperty"--_SubtermProperty_path = Core.Name "path"--_SubtermProperty_target = Core.Name "target"- -- | A function which maps from a term to a particular immediate subterm data SubtermStep = -- | Access the annotation of an annotated term@@ -138,10 +125,8 @@ SubtermStepLetBody | -- | Access an element of a list by index SubtermStepListElement Int |- -- | Access the key of the map entry at the given index- SubtermStepMapKey Int |- -- | Access the value of the map entry at the given index- SubtermStepMapValue Int |+ -- | Access the map entry at the given index as a pair (k, v). Accessing this step constructs the pair; the entry is not itself a subterm occurrence, though its key and value components are, reached via pairFirst/pairSecond. Entry indexes follow the total order on serializable terms.+ SubtermStepMapEntry Int | -- | Access the term inside a given (present) optional value SubtermStepOptionalGiven | -- | Access the first term of a pair@@ -188,9 +173,7 @@ _SubtermStep_listElement = Core.Name "listElement" -_SubtermStep_mapKey = Core.Name "mapKey"--_SubtermStep_mapValue = Core.Name "mapValue"+_SubtermStep_mapEntry = Core.Name "mapEntry" _SubtermStep_optionalGiven = Core.Name "optionalGiven" @@ -208,79 +191,20 @@ _SubtermStep_wrapBody = Core.Name "wrapBody" --- | A link from a node to a non-type attribute of a position-data SubtypeAttribute =- SubtypeAttribute {- -- | The subtype path at which the attribute occurs- subtypeAttributePath :: SubtypePath,- -- | The attribute value- subtypeAttributeTarget :: TypeAttribute}- deriving (Eq, Ord, Read, Show)--_SubtypeAttribute = Core.Name "hydra.paths.SubtypeAttribute"--_SubtypeAttribute_path = Core.Name "path"--_SubtypeAttribute_target = Core.Name "target"---- | A link from a node to a named type, addressed by the path at which it occurs-data SubtypeEdge =- SubtypeEdge {- -- | The subtype path at which the reference occurs- subtypeEdgePath :: SubtypePath,- -- | The name of the referenced type- subtypeEdgeTarget :: Core.Name}- deriving (Eq, Ord, Read, Show)--_SubtypeEdge = Core.Name "hydra.paths.SubtypeEdge"--_SubtypeEdge_path = Core.Name "path"--_SubtypeEdge_target = Core.Name "target"---- | The link view of a schema as subtype nodes and their links-data SubtypeGraph =- SubtypeGraph {- -- | All nodes in the graph- subtypeGraphNodes :: [SubtypeNode]}- deriving (Eq, Ord, Read, Show)--_SubtypeGraph = Core.Name "hydra.paths.SubtypeGraph"--_SubtypeGraph_nodes = Core.Name "nodes"---- | An outgoing link of a subtype node: an edge, a property, or an attribute+-- | An outgoing link to an immediate subtype, carried inline as a child node data SubtypeLink =- -- | A reference to a named type- SubtypeLinkEdge SubtypeEdge |- -- | A leaf type- SubtypeLinkProperty SubtypeProperty |- -- | A non-type attribute of a position- SubtypeLinkAttribute SubtypeAttribute+ SubtypeLink {+ -- | The step by which the child subtype is reached+ subtypeLinkStep :: SubtypeStep,+ -- | The child node (inline; the structure is a tree)+ subtypeLinkChild :: TypeNode} deriving (Eq, Ord, Read, Show) _SubtypeLink = Core.Name "hydra.paths.SubtypeLink" -_SubtypeLink_edge = Core.Name "edge"--_SubtypeLink_property = Core.Name "property"--_SubtypeLink_attribute = Core.Name "attribute"---- | A node in a subtype graph: a named type, with its outgoing links-data SubtypeNode =- SubtypeNode {- -- | The name of the type- subtypeNodeName :: Core.Name,- -- | The outgoing links of the node- subtypeNodeLinks :: [SubtypeLink]}- deriving (Eq, Ord, Read, Show)--_SubtypeNode = Core.Name "hydra.paths.SubtypeNode"--_SubtypeNode_name = Core.Name "name"+_SubtypeLink_step = Core.Name "step" -_SubtypeNode_links = Core.Name "links"+_SubtypeLink_child = Core.Name "child" -- | A sequence of subtype steps forming a path through a type, root first newtype SubtypePath =@@ -290,21 +214,6 @@ _SubtypePath = Core.Name "hydra.paths.SubtypePath" --- | A link from a node to a leaf type (literal, unit, void, or a bound variable)-data SubtypeProperty =- SubtypeProperty {- -- | The subtype path at which the leaf type occurs- subtypePropertyPath :: SubtypePath,- -- | The leaf type- subtypePropertyTarget :: Core.Type}- deriving (Eq, Ord, Read, Show)--_SubtypeProperty = Core.Name "hydra.paths.SubtypeProperty"--_SubtypeProperty_path = Core.Name "path"--_SubtypeProperty_target = Core.Name "target"- -- | A function which maps from a type to a particular immediate subtype data SubtypeStep = -- | Access the body of an annotated type (the annotation is a term; there is no step for it)@@ -387,66 +296,277 @@ _SubtypeStep_wrapBody = Core.Name "wrapBody" --- | A non-term constituent of the term at a path, together with its value-data TermAttribute =+-- | A non-term constituent of this node's term, with its value+data TermAttributeLink = -- | The name of the union type eliminated by a case statement- TermAttributeCasesTypeName Core.Name |+ TermAttributeLinkCasesTypeName Core.Name | -- | The name of the union type of an injection- TermAttributeInjectTypeName Core.Name |+ TermAttributeLinkInjectTypeName Core.Name | -- | The (given) domain type of a lambda- TermAttributeLambdaDomainGiven Core.Type |+ TermAttributeLinkLambdaDomainGiven Core.Type | -- | The parameter name of a lambda- TermAttributeLambdaParameter Core.Name |+ TermAttributeLinkLambdaParameter Core.Name | -- | The name of a let binding together with its (given) type scheme- TermAttributeLetBindingTypeSchemeGiven (Core.Name, Core.TypeScheme) |+ TermAttributeLinkLetBindingTypeSchemeGiven (Core.Name, Core.TypeScheme) |+ -- | The literal value of a literal term (a leaf)+ TermAttributeLinkLiteral Core.Literal | -- | The name of the field projected by a projection- TermAttributeProjectFieldName Core.Name |+ TermAttributeLinkProjectFieldName Core.Name | -- | The name of the record type of a projection- TermAttributeProjectTypeName Core.Name |+ TermAttributeLinkProjectTypeName Core.Name | -- | The name of the record type of a record term- TermAttributeRecordTypeName Core.Name |+ TermAttributeLinkRecordTypeName Core.Name | -- | The type argument of a type application term- TermAttributeTypeApplicationType Core.Type |+ TermAttributeLinkTypeApplicationType Core.Type | -- | The type-variable parameter of a type lambda term- TermAttributeTypeLambdaParameter Core.Name |+ TermAttributeLinkTypeLambdaParameter Core.Name |+ -- | The name of the wrapper type eliminated by an unwrap+ TermAttributeLinkUnwrapTypeName Core.Name | -- | The name of the wrapper type of a wrapped term- TermAttributeWrapTypeName Core.Name+ TermAttributeLinkWrapTypeName Core.Name deriving (Eq, Ord, Read, Show) -_TermAttribute = Core.Name "hydra.paths.TermAttribute"+_TermAttributeLink = Core.Name "hydra.paths.TermAttributeLink" -_TermAttribute_casesTypeName = Core.Name "casesTypeName"+_TermAttributeLink_casesTypeName = Core.Name "casesTypeName" -_TermAttribute_injectTypeName = Core.Name "injectTypeName"+_TermAttributeLink_injectTypeName = Core.Name "injectTypeName" -_TermAttribute_lambdaDomainGiven = Core.Name "lambdaDomainGiven"+_TermAttributeLink_lambdaDomainGiven = Core.Name "lambdaDomainGiven" -_TermAttribute_lambdaParameter = Core.Name "lambdaParameter"+_TermAttributeLink_lambdaParameter = Core.Name "lambdaParameter" -_TermAttribute_letBindingTypeSchemeGiven = Core.Name "letBindingTypeSchemeGiven"+_TermAttributeLink_letBindingTypeSchemeGiven = Core.Name "letBindingTypeSchemeGiven" -_TermAttribute_projectFieldName = Core.Name "projectFieldName"+_TermAttributeLink_literal = Core.Name "literal" -_TermAttribute_projectTypeName = Core.Name "projectTypeName"+_TermAttributeLink_projectFieldName = Core.Name "projectFieldName" -_TermAttribute_recordTypeName = Core.Name "recordTypeName"+_TermAttributeLink_projectTypeName = Core.Name "projectTypeName" -_TermAttribute_typeApplicationType = Core.Name "typeApplicationType"+_TermAttributeLink_recordTypeName = Core.Name "recordTypeName" -_TermAttribute_typeLambdaParameter = Core.Name "typeLambdaParameter"+_TermAttributeLink_typeApplicationType = Core.Name "typeApplicationType" -_TermAttribute_wrapTypeName = Core.Name "wrapTypeName"+_TermAttributeLink_typeLambdaParameter = Core.Name "typeLambdaParameter" --- | A non-type constituent of the type at a path, together with its value-data TypeAttribute =+_TermAttributeLink_unwrapTypeName = Core.Name "unwrapTypeName"++_TermAttributeLink_wrapTypeName = Core.Name "wrapTypeName"++-- | A typed graph as a term graph: one root node per binding of the graph+data TermGraph =+ TermGraph {+ -- | The root nodes, keyed by binding name+ termGraphRoots :: (M.Map Core.Name TermNode)}+ deriving (Eq, Ord, Read, Show)++_TermGraph = Core.Name "hydra.paths.TermGraph"++_TermGraph_roots = Core.Name "roots"++-- | An outgoing link of a term node: an inline subterm, a variable occurrence, or a non-term attribute+data TermLink =+ -- | A non-term constituent of this node's term+ TermLinkAttribute TermAttributeLink |+ -- | A variable or primitive occurrence+ TermLinkReference TermReferenceLink |+ -- | An immediate subterm, carried inline+ TermLinkSubterm SubtermLink+ deriving (Eq, Ord, Read, Show)++_TermLink = Core.Name "hydra.paths.TermLink"++_TermLink_attribute = Core.Name "attribute"++_TermLink_reference = Core.Name "reference"++_TermLink_subterm = Core.Name "subterm"++-- | A node in a term graph: a subterm as written, its type, and its outgoing links+data TermNode =+ TermNode {+ -- | The subterm as written+ termNodeTerm :: Core.Term,+ -- | The subterm's type (a binding's forall type at roots), via hydra.checking+ termNodeType :: Core.Type,+ -- | The outgoing links of the node+ termNodeLinks :: [TermLink]}+ deriving (Eq, Ord, Read, Show)++_TermNode = Core.Name "hydra.paths.TermNode"++_TermNode_term = Core.Name "term"++_TermNode_type = Core.Name "type"++_TermNode_links = Core.Name "links"++-- | The id of a term-graph node: a root binding name plus a subterm path from that root. A root node's id has an empty path. A letBinding step appears only for an actual nested let inside a binding's term, never as a leading pseudo-step.+data TermNodeId =+ TermNodeId {+ -- | The name of the root binding+ termNodeIdRoot :: Core.Name,+ -- | The subterm path from the root+ termNodeIdPath :: SubtermPath}+ deriving (Eq, Ord, Read, Show)++_TermNodeId = Core.Name "hydra.paths.TermNodeId"++_TermNodeId_root = Core.Name "root"++_TermNodeId_path = Core.Name "path"++-- | The target of a variable or primitive occurrence+data TermReference =+ -- | A reference to a lambda-bound variable+ TermReferenceLambda LambdaVariableReference |+ -- | A reference to a let-bound variable+ TermReferenceLet LetVariableReference |+ -- | A reference to a primitive function+ TermReferencePrimitive PrimitiveReference+ deriving (Eq, Ord, Read, Show)++_TermReference = Core.Name "hydra.paths.TermReference"++_TermReference_lambda = Core.Name "lambda"++_TermReference_let = Core.Name "let"++_TermReference_primitive = Core.Name "primitive"++-- | An outgoing link to a variable or primitive occurrence+data TermReferenceLink =+ TermReferenceLink {+ -- | The step by which the occurrence is reached+ termReferenceLinkStep :: SubtermStep,+ -- | The referenced binding, lambda parameter, or primitive+ termReferenceLinkTarget :: TermReference}+ deriving (Eq, Ord, Read, Show)++_TermReferenceLink = Core.Name "hydra.paths.TermReferenceLink"++_TermReferenceLink_step = Core.Name "step"++_TermReferenceLink_target = Core.Name "target"++-- | A non-type constituent of this node's type, with its value+data TypeAttributeLink = -- | The annotation of an annotated type (a term; not descended into)- TypeAttributeAnnotatedAnnotation Core.Term |+ TypeAttributeLinkAnnotatedAnnotation Core.Term | -- | The type-variable parameter of a universally quantified type- TypeAttributeForallParameter Core.Name+ TypeAttributeLinkForallParameter Core.Name |+ -- | The literal type of a literal type (a leaf)+ TypeAttributeLinkLiteral Core.LiteralType deriving (Eq, Ord, Read, Show) -_TypeAttribute = Core.Name "hydra.paths.TypeAttribute"+_TypeAttributeLink = Core.Name "hydra.paths.TypeAttributeLink" -_TypeAttribute_annotatedAnnotation = Core.Name "annotatedAnnotation"+_TypeAttributeLink_annotatedAnnotation = Core.Name "annotatedAnnotation" -_TypeAttribute_forallParameter = Core.Name "forallParameter"+_TypeAttributeLink_forallParameter = Core.Name "forallParameter"++_TypeAttributeLink_literal = Core.Name "literal"++-- | A schema as a type graph: one root node per named type+data TypeGraph =+ TypeGraph {+ -- | The root nodes, keyed by type name+ typeGraphRoots :: (M.Map Core.Name TypeNode)}+ deriving (Eq, Ord, Read, Show)++_TypeGraph = Core.Name "hydra.paths.TypeGraph"++_TypeGraph_roots = Core.Name "roots"++-- | An outgoing link of a type node: an inline subtype, a type reference, or a non-type attribute+data TypeLink =+ -- | A non-type constituent of this node's type+ TypeLinkAttribute TypeAttributeLink |+ -- | A named-type or type-variable occurrence+ TypeLinkReference TypeReferenceLink |+ -- | An immediate subtype, carried inline+ TypeLinkSubtype SubtypeLink+ deriving (Eq, Ord, Read, Show)++_TypeLink = Core.Name "hydra.paths.TypeLink"++_TypeLink_attribute = Core.Name "attribute"++_TypeLink_reference = Core.Name "reference"++_TypeLink_subtype = Core.Name "subtype"++-- | A node in a type graph: a subtype as written and its outgoing links+data TypeNode =+ TypeNode {+ -- | The subtype as written (needed for linkless leaves: literal types, unit, void)+ typeNodeType :: Core.Type,+ -- | The outgoing links of the node+ typeNodeLinks :: [TypeLink]}+ deriving (Eq, Ord, Read, Show)++_TypeNode = Core.Name "hydra.paths.TypeNode"++_TypeNode_type = Core.Name "type"++_TypeNode_links = Core.Name "links"++-- | The id of a type-graph node: a root type name plus a subtype path from that root. A root node's id has an empty path. There is no enclosing-let analog for schemas.+data TypeNodeId =+ TypeNodeId {+ -- | The name of the root type+ typeNodeIdRoot :: Core.Name,+ -- | The subtype path from the root+ typeNodeIdPath :: SubtypePath}+ deriving (Eq, Ord, Read, Show)++_TypeNodeId = Core.Name "hydra.paths.TypeNodeId"++_TypeNodeId_root = Core.Name "root"++_TypeNodeId_path = Core.Name "path"++-- | The target of a named-type or type-variable occurrence+data TypeReference =+ -- | A reference to a named type of the schema+ TypeReferenceNominal NominalTypeReference |+ -- | A reference to a forall-bound type variable+ TypeReferenceVariable TypeVariableReference+ deriving (Eq, Ord, Read, Show)++_TypeReference = Core.Name "hydra.paths.TypeReference"++_TypeReference_nominal = Core.Name "nominal"++_TypeReference_variable = Core.Name "variable"++-- | An outgoing link to a named-type or type-variable occurrence+data TypeReferenceLink =+ TypeReferenceLink {+ -- | The step by which the occurrence is reached+ typeReferenceLinkStep :: SubtypeStep,+ -- | The referenced named type or type variable+ typeReferenceLinkTarget :: TypeReference}+ deriving (Eq, Ord, Read, Show)++_TypeReferenceLink = Core.Name "hydra.paths.TypeReferenceLink"++_TypeReferenceLink_step = Core.Name "step"++_TypeReferenceLink_target = Core.Name "target"++-- | A reference to a forall-bound type variable: the node introducing it is the binder+data TypeVariableReference =+ TypeVariableReference {+ -- | The name of the forall-bound type variable+ typeVariableReferenceVariable :: Core.Name,+ -- | The id of the node at the binding forall+ typeVariableReferenceBoundByNode :: TypeNodeId}+ deriving (Eq, Ord, Read, Show)++_TypeVariableReference = Core.Name "hydra.paths.TypeVariableReference"++_TypeVariableReference_variable = Core.Name "variable"++_TypeVariableReference_boundByNode = Core.Name "boundByNode"
src/main/haskell/Hydra/Print/Error/Packaging.hs view
@@ -137,6 +137,8 @@ ErrorPackaging.InvalidPackageErrorDuplicateModuleName v0 -> duplicateModuleNameError v0 ErrorPackaging.InvalidPackageErrorInvalidModule v0 -> invalidModuleError v0 ErrorPackaging.InvalidPackageErrorInvalidPackageName v0 -> invalidPackageNameError v0+ ErrorPackaging.InvalidPackageErrorModuleInMultiplePackages v0 -> moduleInMultiplePackagesError v0+ ErrorPackaging.InvalidPackageErrorNestedModuleName v0 -> nestedModuleNameError v0 ErrorPackaging.InvalidPackageErrorUndeclaredDependency v0 -> undeclaredDependencyError v0) -- | Show an invalid package name error as a string@@ -156,6 +158,26 @@ ": definition ", (Core.unName (ErrorPackaging.missingDocumentationErrorName e)), " lacks a description annotation"]++-- | Show a module-in-multiple-packages error as a string+moduleInMultiplePackagesError :: ErrorPackaging.ModuleInMultiplePackagesError -> String+moduleInMultiplePackagesError e =+ Strings.concat [+ "module namespace ",+ (Packaging.unModuleName (ErrorPackaging.moduleInMultiplePackagesErrorModuleName e)),+ " is declared by more than one package: ",+ (Packaging.unPackageName (ErrorPackaging.moduleInMultiplePackagesErrorFirstPackage e)),+ " vs ",+ (Packaging.unPackageName (ErrorPackaging.moduleInMultiplePackagesErrorSecondPackage e))]++-- | Show a nested module name error as a string+nestedModuleNameError :: ErrorPackaging.NestedModuleNameError -> String+nestedModuleNameError e =+ Strings.concat [+ "module namespace ",+ (Packaging.unModuleName (ErrorPackaging.nestedModuleNameErrorOuter e)),+ " is a strict dotted-prefix of module namespace ",+ (Packaging.unModuleName (ErrorPackaging.nestedModuleNameErrorInner e))] -- | Show an undeclared dependency error as a string undeclaredDependencyError :: ErrorPackaging.UndeclaredDependencyError -> String
src/main/haskell/Hydra/Print/Paths.hs view
@@ -59,7 +59,7 @@ mpayload = Lists.at 1 segs name = Optionals.map (\x -> Core.Name x) mpayload idx = Optionals.bind mpayload Literals.parseInt32- in (Logic.ifElse (Equality.equal tag "annotatedAnnotation") (Just Paths.SubtermStepAnnotatedAnnotation) (Logic.ifElse (Equality.equal tag "annotatedBody") (Just Paths.SubtermStepAnnotatedBody) (Logic.ifElse (Equality.equal tag "applicationArgument") (Just Paths.SubtermStepApplicationArgument) (Logic.ifElse (Equality.equal tag "applicationFunction") (Just Paths.SubtermStepApplicationFunction) (Logic.ifElse (Equality.equal tag "casesCase") (Optionals.map (\x -> Paths.SubtermStepCasesCase x) name) (Logic.ifElse (Equality.equal tag "casesDefault") (Just Paths.SubtermStepCasesDefault) (Logic.ifElse (Equality.equal tag "eitherLeft") (Just Paths.SubtermStepEitherLeft) (Logic.ifElse (Equality.equal tag "eitherRight") (Just Paths.SubtermStepEitherRight) (Logic.ifElse (Equality.equal tag "injectField") (Optionals.map (\x -> Paths.SubtermStepInjectField x) name) (Logic.ifElse (Equality.equal tag "lambdaBody") (Just Paths.SubtermStepLambdaBody) (Logic.ifElse (Equality.equal tag "letBinding") (Optionals.map (\x -> Paths.SubtermStepLetBinding x) name) (Logic.ifElse (Equality.equal tag "letBody") (Just Paths.SubtermStepLetBody) (Logic.ifElse (Equality.equal tag "listElement") (Optionals.map (\x -> Paths.SubtermStepListElement x) idx) (Logic.ifElse (Equality.equal tag "mapKey") (Optionals.map (\x -> Paths.SubtermStepMapKey x) idx) (Logic.ifElse (Equality.equal tag "mapValue") (Optionals.map (\x -> Paths.SubtermStepMapValue x) idx) (Logic.ifElse (Equality.equal tag "optionalGiven") (Just Paths.SubtermStepOptionalGiven) (Logic.ifElse (Equality.equal tag "pairFirst") (Just Paths.SubtermStepPairFirst) (Logic.ifElse (Equality.equal tag "pairSecond") (Just Paths.SubtermStepPairSecond) (Logic.ifElse (Equality.equal tag "recordField") (Optionals.map (\x -> Paths.SubtermStepRecordField x) name) (Logic.ifElse (Equality.equal tag "setElement") (Optionals.map (\x -> Paths.SubtermStepSetElement x) idx) (Logic.ifElse (Equality.equal tag "typeApplicationBody") (Just Paths.SubtermStepTypeApplicationBody) (Logic.ifElse (Equality.equal tag "typeLambdaBody") (Just Paths.SubtermStepTypeLambdaBody) (Logic.ifElse (Equality.equal tag "wrapBody") (Just Paths.SubtermStepWrapBody) Nothing)))))))))))))))))))))))+ in (Logic.ifElse (Equality.equal tag "annotatedAnnotation") (Just Paths.SubtermStepAnnotatedAnnotation) (Logic.ifElse (Equality.equal tag "annotatedBody") (Just Paths.SubtermStepAnnotatedBody) (Logic.ifElse (Equality.equal tag "applicationArgument") (Just Paths.SubtermStepApplicationArgument) (Logic.ifElse (Equality.equal tag "applicationFunction") (Just Paths.SubtermStepApplicationFunction) (Logic.ifElse (Equality.equal tag "casesCase") (Optionals.map (\x -> Paths.SubtermStepCasesCase x) name) (Logic.ifElse (Equality.equal tag "casesDefault") (Just Paths.SubtermStepCasesDefault) (Logic.ifElse (Equality.equal tag "eitherLeft") (Just Paths.SubtermStepEitherLeft) (Logic.ifElse (Equality.equal tag "eitherRight") (Just Paths.SubtermStepEitherRight) (Logic.ifElse (Equality.equal tag "injectField") (Optionals.map (\x -> Paths.SubtermStepInjectField x) name) (Logic.ifElse (Equality.equal tag "lambdaBody") (Just Paths.SubtermStepLambdaBody) (Logic.ifElse (Equality.equal tag "letBinding") (Optionals.map (\x -> Paths.SubtermStepLetBinding x) name) (Logic.ifElse (Equality.equal tag "letBody") (Just Paths.SubtermStepLetBody) (Logic.ifElse (Equality.equal tag "listElement") (Optionals.map (\x -> Paths.SubtermStepListElement x) idx) (Logic.ifElse (Equality.equal tag "mapEntry") (Optionals.map (\x -> Paths.SubtermStepMapEntry x) idx) (Logic.ifElse (Equality.equal tag "optionalGiven") (Just Paths.SubtermStepOptionalGiven) (Logic.ifElse (Equality.equal tag "pairFirst") (Just Paths.SubtermStepPairFirst) (Logic.ifElse (Equality.equal tag "pairSecond") (Just Paths.SubtermStepPairSecond) (Logic.ifElse (Equality.equal tag "recordField") (Optionals.map (\x -> Paths.SubtermStepRecordField x) name) (Logic.ifElse (Equality.equal tag "setElement") (Optionals.map (\x -> Paths.SubtermStepSetElement x) idx) (Logic.ifElse (Equality.equal tag "typeApplicationBody") (Just Paths.SubtermStepTypeApplicationBody) (Logic.ifElse (Equality.equal tag "typeLambdaBody") (Just Paths.SubtermStepTypeLambdaBody) (Logic.ifElse (Equality.equal tag "wrapBody") (Just Paths.SubtermStepWrapBody) Nothing)))))))))))))))))))))) -- | Parse a printed subtype path (steps joined by '/') back into a SubtypePath parseSubtypePath :: String -> Maybe Paths.SubtypePath@@ -98,8 +98,7 @@ Paths.SubtermStepLetBinding v0 -> Strings.concat2 "letBinding:" (Core.unName v0) Paths.SubtermStepLetBody -> "letBody" Paths.SubtermStepListElement v0 -> Strings.concat2 "listElement:" (Literals.printInt32 v0)- Paths.SubtermStepMapKey v0 -> Strings.concat2 "mapKey:" (Literals.printInt32 v0)- Paths.SubtermStepMapValue v0 -> Strings.concat2 "mapValue:" (Literals.printInt32 v0)+ Paths.SubtermStepMapEntry v0 -> Strings.concat2 "mapEntry:" (Literals.printInt32 v0) Paths.SubtermStepOptionalGiven -> "optionalGiven" Paths.SubtermStepPairFirst -> "pairFirst" Paths.SubtermStepPairSecond -> "pairSecond"
src/main/haskell/Hydra/Print/Util.hs view
@@ -45,6 +45,7 @@ Util.CaseConventionUpperSnake -> "UPPER_SNAKE_CASE" Util.CaseConventionCamel -> "camelCase" Util.CaseConventionPascal -> "PascalCase"+ Util.CaseConventionUpperDashed -> "UPPER-DASHED-CASE" -- | Show a comparison result as a string comparison :: Util.Comparison -> String
src/main/haskell/Hydra/Rewriting.hs view
@@ -379,10 +379,14 @@ let idx = 0 rr = Lists.foldl (\r -> \kv ->- let rk = recurse (Lists.concat2 path [- Paths.SubtermStepMapKey (Pairs.first r)]) (Pairs.first (Pairs.second r)) (Pairs.first kv)- rv = recurse (Lists.concat2 path [- Paths.SubtermStepMapValue (Pairs.first r)]) (Pairs.first rk) (Pairs.second kv)+ let rk =+ recurse (Lists.concat2 path [+ Paths.SubtermStepMapEntry (Pairs.first r),+ Paths.SubtermStepPairFirst]) (Pairs.first (Pairs.second r)) (Pairs.first kv)+ rv =+ recurse (Lists.concat2 path [+ Paths.SubtermStepMapEntry (Pairs.first r),+ Paths.SubtermStepPairSecond]) (Pairs.first rk) (Pairs.second kv) in (Math.add (Pairs.first r) 1, (Pairs.first rv, (Lists.cons (Pairs.second rk, (Pairs.second rv)) (Pairs.second (Pairs.second r)))))) (idx, (val0, [])) (Maps.toList v0) in (Pairs.first (Pairs.second rr), (Core.TermMap (Maps.fromList (Lists.reverse (Pairs.second (Pairs.second rr)))))) Core.TermOptional v0 -> Optionals.match v0 dflt (\t -> forSingleWithAccessor recurse (\t1 -> Core.TermOptional (Just t1)) Paths.SubtermStepOptionalGiven val0 t)@@ -944,11 +948,9 @@ let idx = Pairs.first r in (Math.add idx 1, (Lists.cons (idx, el) (Pairs.second r)))) (0, []) v0))) Core.TermLiteral _ -> []- Core.TermMap v0 -> Lists.concat (Lists.map (\ip -> [- (Paths.SubtermStepMapKey (Pairs.first ip), (Pairs.first (Pairs.second ip))),- (Paths.SubtermStepMapValue (Pairs.first ip), (Pairs.second (Pairs.second ip)))]) (Lists.reverse (Pairs.second (Lists.foldl (\r -> \el ->+ Core.TermMap v0 -> Lists.map (\ip -> (Paths.SubtermStepMapEntry (Pairs.first ip), (Core.TermPair (Pairs.first (Pairs.second ip), (Pairs.second (Pairs.second ip)))))) (Lists.reverse (Pairs.second (Lists.foldl (\r -> \el -> let idx = Pairs.first r- in (Math.add idx 1, (Lists.cons (idx, el) (Pairs.second r)))) (0, []) (Maps.toList v0)))))+ in (Math.add idx 1, (Lists.cons (idx, el) (Pairs.second r)))) (0, []) (Maps.toList v0)))) Core.TermOptional v0 -> Optionals.match v0 [] (\t -> [ (Paths.SubtermStepOptionalGiven, t)]) Core.TermPair v0 -> [
− src/main/haskell/Hydra/Shredding.hs
@@ -1,216 +0,0 @@--- Note: this is an automatically generated file. Do not edit.---- | Shredding: the total, injective decomposition of a typed graph's bindings into flat, path-addressed links (edges, properties, attributes) — the link view of a graph.--module Hydra.Shredding 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.Eithers as Eithers-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.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.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.Rewriting as Rewriting-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.Map as M-import qualified Data.Set as S---- | The link view of a typed graph: one node per bound term, each with the edge/property/attribute links found by a complete traversal of its term. Input must be typed (binding type schemes present); an untyped binding is a precondition failure, not a degraded mode.-shredGraph :: Graph.Graph -> Either Errors.Error Paths.SubtermGraph-shredGraph graph =-- let boundTerms = Graph.graphBoundTerms graph- boundTypes = Graph.graphBoundTypes graph- in (Eithers.map (\nodes -> Paths.SubtermGraph {- Paths.subtermGraphNodes = nodes}) (Eithers.mapList (\nt ->- let name = Pairs.first nt- term = Pairs.second nt- in (Optionals.match (Maps.lookup name boundTypes) (Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "shredGraph: untyped binding: " (Core.unName name))))) (\ts -> shredTerm graph name ts term))) (Maps.toList boundTerms)))---- | The link view of a schema: one node per named type. A Type.variable referencing a schema-bound name is an edge; a forall-bound variable in scope is a property; leaf types are properties.-shredSchema :: M.Map Core.Name Core.Type -> Either Errors.Error Paths.SubtypeGraph-shredSchema schema =-- let schemaNames =- Maps.fromList (Lists.map (\nt -> (- Pairs.first nt,- Core.TypeScheme {- Core.typeSchemeVariables = [],- Core.typeSchemeBody = (Pairs.second nt),- Core.typeSchemeConstraints = Maps.empty})) (Maps.toList schema))- in (Eithers.map (\nodes -> Paths.SubtypeGraph {- Paths.subtypeGraphNodes = nodes}) (Eithers.mapList (\nt -> shredType schemaNames (Pairs.first nt) (Pairs.second nt)) (Maps.toList schema)))---- | Shred one binding (name, type scheme, term) of a graph into a subterm node-shredTerm :: Graph.Graph -> Core.Name -> Core.TypeScheme -> Core.Term -> Either Errors.Error Paths.SubtermNode-shredTerm graph name ts term =- Eithers.map (\links -> Paths.SubtermNode {- Paths.subtermNodeName = name,- Paths.subtermNodeType = ts,- Paths.subtermNodeLinks = links}) (shredTermLinks graph Sets.empty (Paths.SubtermPath []) term)---- | Compute the outgoing links of a term at the given path, given the local scope of names bound by lambda/let steps already taken. Leaf terms yield a property or edge; a variable is classified as an edge (bound in the graph), a property (locally bound or a primitive), or a failure (free).-shredTermLinks :: Graph.Graph -> S.Set Core.Name -> Paths.SubtermPath -> Core.Term -> Either Errors.Error [Paths.SubtermLink]-shredTermLinks graph scope path term =-- let steps = Paths.unSubtermPath path- attrs = Lists.map (\x -> Paths.SubtermLinkAttribute x) (termAttributes path term)- childScope =- case term of- Core.TermLambda v0 -> Sets.insert (Core.lambdaParameter v0) scope- Core.TermLet v0 -> Lists.foldl (\acc -> \b -> Sets.insert (Core.bindingName b) acc) scope (Core.letBindings v0)- _ -> scope- leafLinks =- case term of- Core.TermLiteral _ -> Right [- Paths.SubtermLinkProperty (Paths.SubtermProperty {- Paths.subtermPropertyPath = path,- Paths.subtermPropertyTarget = term})]- Core.TermProject _ -> Right [- Paths.SubtermLinkProperty (Paths.SubtermProperty {- Paths.subtermPropertyPath = path,- Paths.subtermPropertyTarget = term})]- Core.TermUnit -> Right [- Paths.SubtermLinkProperty (Paths.SubtermProperty {- Paths.subtermPropertyPath = path,- Paths.subtermPropertyTarget = term})]- Core.TermUnwrap _ -> Right [- Paths.SubtermLinkProperty (Paths.SubtermProperty {- Paths.subtermPropertyPath = path,- Paths.subtermPropertyTarget = term})]- Core.TermVariable v0 -> Logic.ifElse (Sets.member v0 scope) (Right [- Paths.SubtermLinkProperty (Paths.SubtermProperty {- Paths.subtermPropertyPath = path,- Paths.subtermPropertyTarget = term})]) (Logic.ifElse (Maps.member v0 (Graph.graphBoundTerms graph)) (Right [- Paths.SubtermLinkEdge (Paths.SubtermEdge {- Paths.subtermEdgePath = path,- Paths.subtermEdgeTarget = v0})]) (Logic.ifElse (Maps.member v0 (Graph.graphPrimitives graph)) (Right [- Paths.SubtermLinkProperty (Paths.SubtermProperty {- Paths.subtermPropertyPath = path,- Paths.subtermPropertyTarget = term})]) (Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "free variable in shredded term: " (Core.unName v0)))))))- _ -> Right []- in (Eithers.bind (Eithers.mapList (\st ->- let step = Pairs.first st- child = Pairs.second st- childPath = Paths.SubtermPath (Lists.concat2 steps [- step])- in (shredTermLinks graph childScope childPath child)) (Rewriting.subtermsWithSteps term)) (\childLinkLists -> Eithers.bind leafLinks (\leaf -> Right (Lists.concat2 attrs (Lists.concat2 leaf (Lists.concat childLinkLists))))))---- | Shred one named type of a schema into a subtype node-shredType :: M.Map Core.Name t0 -> Core.Name -> Core.Type -> Either Errors.Error Paths.SubtypeNode-shredType schema name typ =- Eithers.map (\links -> Paths.SubtypeNode {- Paths.subtypeNodeName = name,- Paths.subtypeNodeLinks = links}) (shredTypeLinks schema Sets.empty (Paths.SubtypePath []) typ)---- | Compute the outgoing links of a type at the given path, given the scope of forall-bound variables. A leaf type yields a property; a variable is an edge (a named type in the schema), a property (forall-bound in scope), or a failure (free).-shredTypeLinks :: M.Map Core.Name t0 -> S.Set Core.Name -> Paths.SubtypePath -> Core.Type -> Either Errors.Error [Paths.SubtypeLink]-shredTypeLinks schema scope path typ =-- let steps = Paths.unSubtypePath path- attrs = Lists.map (\x -> Paths.SubtypeLinkAttribute x) (typeAttributes path typ)- childScope =- case typ of- Core.TypeForall v0 -> Sets.insert (Core.forallTypeParameter v0) scope- _ -> scope- leafLinks =- case typ of- Core.TypeLiteral _ -> Right [- Paths.SubtypeLinkProperty (Paths.SubtypeProperty {- Paths.subtypePropertyPath = path,- Paths.subtypePropertyTarget = typ})]- Core.TypeUnit -> Right [- Paths.SubtypeLinkProperty (Paths.SubtypeProperty {- Paths.subtypePropertyPath = path,- Paths.subtypePropertyTarget = typ})]- Core.TypeVoid -> Right [- Paths.SubtypeLinkProperty (Paths.SubtypeProperty {- Paths.subtypePropertyPath = path,- Paths.subtypePropertyTarget = typ})]- Core.TypeVariable v0 -> Logic.ifElse (Sets.member v0 scope) (Right [- Paths.SubtypeLinkProperty (Paths.SubtypeProperty {- Paths.subtypePropertyPath = path,- Paths.subtypePropertyTarget = typ})]) (Logic.ifElse (Maps.member v0 schema) (Right [- Paths.SubtypeLinkEdge (Paths.SubtypeEdge {- Paths.subtypeEdgePath = path,- Paths.subtypeEdgeTarget = v0})]) (Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "free type variable in shredded type: " (Core.unName v0))))))- _ -> Right []- in (Eithers.bind (Eithers.mapList (\st ->- let step = Pairs.first st- child = Pairs.second st- childPath = Paths.SubtypePath (Lists.concat2 steps [- step])- in (shredTypeLinks schema childScope childPath child)) (Rewriting.subtypesWithSteps typ)) (\childLinkLists -> Eithers.bind leafLinks (\leaf -> Right (Lists.concat2 attrs (Lists.concat2 leaf (Lists.concat childLinkLists))))))---- | The attribute links contributed by a term constructor at the given path-termAttributes :: Paths.SubtermPath -> Core.Term -> [Paths.SubtermAttribute]-termAttributes path term =-- let attr =- \a -> Paths.SubtermAttribute {- Paths.subtermAttributePath = path,- Paths.subtermAttributeTarget = a}- one = \a -> [- attr a]- in case term of- Core.TermCases v0 -> one (Paths.TermAttributeCasesTypeName (Core.caseStatementTypeName v0))- Core.TermInject v0 -> one (Paths.TermAttributeInjectTypeName (Core.injectionTypeName v0))- Core.TermLambda v0 -> Lists.concat2 [- attr (Paths.TermAttributeLambdaParameter (Core.lambdaParameter v0))] (Optionals.match (Core.lambdaDomain v0) [] (\d -> [- attr (Paths.TermAttributeLambdaDomainGiven d)]))- Core.TermProject v0 -> [- attr (Paths.TermAttributeProjectTypeName (Core.projectionTypeName v0)),- (attr (Paths.TermAttributeProjectFieldName (Core.projectionFieldName v0)))]- Core.TermRecord v0 -> one (Paths.TermAttributeRecordTypeName (Core.recordTypeName v0))- Core.TermTypeApplication v0 -> one (Paths.TermAttributeTypeApplicationType (Core.typeApplicationTermType v0))- Core.TermTypeLambda v0 -> one (Paths.TermAttributeTypeLambdaParameter (Core.typeLambdaParameter v0))- Core.TermWrap v0 -> one (Paths.TermAttributeWrapTypeName (Core.wrappedTermTypeName v0))- _ -> []---- | The attribute links contributed by a type constructor at the given path-typeAttributes :: Paths.SubtypePath -> Core.Type -> [Paths.SubtypeAttribute]-typeAttributes path typ =-- let attr =- \a -> Paths.SubtypeAttribute {- Paths.subtypeAttributePath = path,- Paths.subtypeAttributeTarget = a}- in case typ of- Core.TypeAnnotated v0 -> [- attr (Paths.TypeAttributeAnnotatedAnnotation (Core.annotatedTypeAnnotation v0))]- Core.TypeForall v0 -> [- attr (Paths.TypeAttributeForallParameter (Core.forallTypeParameter v0))]- _ -> []
+ src/main/haskell/Hydra/Subterms.hs view
@@ -0,0 +1,354 @@+-- Note: this is an automatically generated file. Do not edit.++-- | The term-graph view of a typed graph: nodes are subterms, sharing is explicit, children are inline (a tree with symbolic cross-links). graphToTermGraph builds it; schemaToTypeGraph is the type-side twin. Term graphs are Ariola-Klop's nested systems of recursion equations.++module Hydra.Subterms where++import qualified Hydra.Ast as Ast+import qualified Hydra.Checking as Checking+import qualified Hydra.Coders as Coders+import qualified Hydra.Core as Core+import qualified Hydra.Docs as Docs+import qualified Hydra.Error.Checking as ErrorChecking+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.Extract.Core as ExtractCore+import qualified Hydra.File as File+import qualified Hydra.Graph as Graph+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.Logic as Logic+import qualified Hydra.Overlay.Haskell.Lib.Maps as Maps+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.Packaging as Packaging+import qualified Hydra.Parsing as Parsing+import qualified Hydra.Paths as Paths+import qualified Hydra.Query as Query+import qualified Hydra.Reflect as Reflect+import qualified Hydra.Regex as Regex+import qualified Hydra.Relational as Relational+import qualified Hydra.Rewriting as Rewriting+import qualified Hydra.Substitution as Substitution+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.Map as M+import qualified Data.Set as S++-- | The expected type to thread into an immediate child, given this node's (synthesized) type, its term, and the step reaching the child. This is the term->type position map underlying the TermGraph:TypeGraph erasure: element positions get the container element type, mapEntry gets pair<K,V>, lambdaBody the codomain, and so on. `none` where the child's type is not fixed top-down (e.g. a function-position subterm), which is fine for non-empty children.+expectedForStep :: M.Map Core.Name Core.Type -> Core.Type -> Core.Term -> Paths.SubtermStep -> Maybe Core.Type+expectedForStep schema typ term step =++ let elementOfList =+ \t -> case t of+ Core.TypeList v0 -> Just v0+ _ -> Nothing+ elementOfSet =+ \t -> case t of+ Core.TypeSet v0 -> Just v0+ _ -> Nothing+ elementOfOptional =+ \t -> case t of+ Core.TypeOptional v0 -> Just v0+ _ -> Nothing+ codomainOf =+ \t -> case t of+ Core.TypeFunction v0 -> Just (Core.functionTypeCodomain v0)+ _ -> Nothing+ mapPairType =+ \t -> case t of+ Core.TypeMap v0 -> Just (Core.TypePair (Core.PairType {+ Core.pairTypeFirst = (Core.mapTypeKeys v0),+ Core.pairTypeSecond = (Core.mapTypeValues v0)}))+ _ -> Nothing+ in case step of+ Paths.SubtermStepListElement _ -> elementOfList typ+ Paths.SubtermStepSetElement _ -> elementOfSet typ+ Paths.SubtermStepOptionalGiven -> elementOfOptional typ+ Paths.SubtermStepLambdaBody -> codomainOf typ+ Paths.SubtermStepMapEntry _ -> mapPairType typ+ Paths.SubtermStepPairFirst -> case typ of+ Core.TypePair v1 -> Just (Core.pairTypeFirst v1)+ _ -> Nothing+ Paths.SubtermStepPairSecond -> case typ of+ Core.TypePair v1 -> Just (Core.pairTypeSecond v1)+ _ -> Nothing+ Paths.SubtermStepRecordField v0 -> fieldTypeFromSchema schema term v0+ Paths.SubtermStepInjectField v0 -> fieldTypeFromSchema schema term v0+ _ -> Nothing++-- | The expected type of a record field / injected union field, from the named type in the schema+fieldTypeFromSchema :: M.Map Core.Name Core.Type -> Core.Term -> Core.Name -> Maybe Core.Type+fieldTypeFromSchema schema term fname =+ case term of+ Core.TermRecord v0 -> Optionals.bind (Maps.lookup (Core.recordTypeName v0) schema) (\sty -> Eithers.either (\_ -> Nothing) (\fields -> findFieldTypeIn fname fields) (ExtractCore.recordType (Core.recordTypeName v0) sty))+ Core.TermInject v0 -> Optionals.bind (Maps.lookup (Core.injectionTypeName v0) schema) (\sty -> Eithers.either (\_ -> Nothing) (\fields -> findFieldTypeIn fname fields) (ExtractCore.unionType (Core.injectionTypeName v0) sty))+ _ -> Nothing++-- | The type of the named field within a list of field types, if present+findFieldTypeIn :: Core.Name -> [Core.FieldType] -> Maybe Core.Type+findFieldTypeIn fname fields =+ Optionals.map Core.fieldTypeType (Lists.head (Lists.filter (\f -> Equality.equal (Core.fieldTypeName f) fname) fields))++-- | The term-graph view of a typed graph: one root node per binding. Sharing is explicit; children are inline (a tree); variable occurrences become symbolic references carrying their binding node's id. Input must be a POST-INFERENCE (elaborated) graph: binding schemes present, lambda domains present, typeLambda/typeApplication explicit. Node types are synthesized in one O(n) bidirectional pass; a missing annotation (or an untyped empty leaf) is a precondition failure.+graphToTermGraph :: Graph.Graph -> Either Errors.Error Paths.TermGraph+graphToTermGraph graph =++ let boundTerms = Graph.graphBoundTerms graph+ schema = Maps.map (\ts -> Core.typeSchemeBody ts) (Graph.graphBoundTypes graph)+ in (Eithers.map (\roots -> Paths.TermGraph {+ Paths.termGraphRoots = (Maps.fromList roots)}) (Eithers.mapList (\nt ->+ let name = Pairs.first nt+ term = Pairs.second nt+ expected = rootExpectedType schema name+ in (Eithers.map (\node -> (name, node)) (termGraphNode graph schema name Maps.empty Sets.empty expected (Paths.SubtermPath []) term))) (Maps.toList boundTerms)))++-- | The expected type for a root binding node: its declared type in the schema, if present+rootExpectedType :: Ord t0 => (M.Map t0 t1 -> t0 -> Maybe t1)+rootExpectedType schema name = Maps.lookup name schema++-- | The type-graph view of a schema: one root node per named type. A Type.variable referencing a schema-bound name is a nominal reference; a forall-bound variable in scope is a variable reference to its binding node; leaf types and non-type constituents are carried as links.+schemaToTypeGraph :: M.Map Core.Name Core.Type -> Either Errors.Error Paths.TypeGraph+schemaToTypeGraph schema =++ let schemaNames = Maps.keys schema+ in (Eithers.map (\roots -> Paths.TypeGraph {+ Paths.typeGraphRoots = (Maps.fromList roots)}) (Eithers.mapList (\nt ->+ let name = Pairs.first nt+ typ = Pairs.second nt+ in (Eithers.map (\node -> (name, node)) (typeGraphNode (Sets.fromList schemaNames) name Maps.empty (Paths.SubtypePath []) typ))) (Maps.toList schema)))++-- | Synthesize the type of an elaborated subterm, syntax-directed and without unification, threading `expected` top-down. Reads annotations (lambda domain, typeApplication type) and combines child types bottom-up; synthesis-incomplete leaves (empty list/set/map, optional none, either's absent branch) CONSUME `expected`. `expected = none` at such a leaf is a precondition failure with path.+synthesizeType :: t0 -> M.Map Core.Name Core.Type -> M.Map Core.Name Core.Type -> Core.Name -> Maybe Core.Type -> t1 -> Core.Term -> Either Errors.Error Core.Type+synthesizeType graph schema env root expected path term =++ let recurseInto = \mexp -> \child -> synthesizeType graph schema env root mexp path child+ fail =+ \msg -> Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 (Strings.concat2 "synthesizeType precondition: " msg) (Strings.concat2 " at " (Core.unName root)))))+ consumeExpected = \what -> Optionals.match expected (fail (Strings.concat2 "untyped " what)) (\t -> Right t)+ elementOfExpected =+ Optionals.bind expected (\t -> case t of+ Core.TypeList v0 -> Just v0+ Core.TypeSet v0 -> Just v0+ Core.TypeOptional v0 -> Just v0+ _ -> Nothing)+ codomainOfExpected =+ Optionals.bind expected (\t -> case t of+ Core.TypeFunction v0 -> Just (Core.functionTypeCodomain v0)+ _ -> Nothing)+ in case term of+ Core.TermApplication v0 -> Eithers.bind (recurseInto Nothing (Core.applicationFunction v0)) (\ftype -> case ftype of+ Core.TypeFunction v1 -> Right (Core.functionTypeCodomain v1)+ _ -> fail "application of a non-function")+ Core.TermLambda v0 -> Optionals.match (Core.lambdaDomain v0) (fail "lambda without a domain annotation") (\dom -> Eithers.map (\bt -> Core.TypeFunction (Core.FunctionType {+ Core.functionTypeDomain = dom,+ Core.functionTypeCodomain = bt})) (recurseInto codomainOfExpected (Core.lambdaBody v0)))+ Core.TermTypeLambda v0 -> Eithers.map (\bt -> Core.TypeForall (Core.ForallType {+ Core.forallTypeParameter = (Core.typeLambdaParameter v0),+ Core.forallTypeBody = bt})) (recurseInto Nothing (Core.typeLambdaBody v0))+ Core.TermTypeApplication v0 -> Eithers.bind (recurseInto Nothing (Core.typeApplicationTermBody v0)) (\bt -> case bt of+ Core.TypeForall v1 -> Right (Substitution.substInType (Substitution.singletonTypeSubst (Core.forallTypeParameter v1) (Core.typeApplicationTermType v0)) (Core.forallTypeBody v1))+ _ -> fail "type application of a non-forall")+ Core.TermVariable v0 -> Optionals.match (Maps.lookup v0 env) (Optionals.match (Maps.lookup v0 schema) (fail (Strings.concat2 "unbound variable " (Core.unName v0))) (\t -> Right t)) (\t -> Right t)+ Core.TermUnit -> Right Core.TypeUnit+ Core.TermLiteral v0 -> Right (Core.TypeLiteral (Reflect.literalType v0))+ Core.TermOptional v0 -> Optionals.match v0 (consumeExpected "optional none") (\t -> Eithers.map (\x -> Core.TypeOptional x) (recurseInto elementOfExpected t))+ Core.TermList v0 -> Optionals.match (Lists.head v0) (consumeExpected "empty list") (\t0 -> Eithers.map (\x -> Core.TypeList x) (recurseInto elementOfExpected t0))+ Core.TermSet v0 -> Optionals.match (Lists.head (Sets.toList v0)) (consumeExpected "empty set") (\t0 -> Eithers.map (\x -> Core.TypeSet x) (recurseInto elementOfExpected t0))+ Core.TermMap v0 -> Optionals.match (Lists.head (Maps.toList v0)) (consumeExpected "empty map") (\kv -> Eithers.bind (recurseInto Nothing (Pairs.first kv)) (\kt -> Eithers.map (\vt -> Core.TypeMap (Core.MapType {+ Core.mapTypeKeys = kt,+ Core.mapTypeValues = vt})) (recurseInto Nothing (Pairs.second kv))))+ Core.TermPair v0 -> Eithers.bind (recurseInto Nothing (Pairs.first v0)) (\ft -> Eithers.map (\st -> Core.TypePair (Core.PairType {+ Core.pairTypeFirst = ft,+ Core.pairTypeSecond = st})) (recurseInto Nothing (Pairs.second v0)))+ Core.TermEither _ -> consumeExpected "either value"+ Core.TermRecord v0 -> Optionals.match (Maps.lookup (Core.recordTypeName v0) schema) (fail (Strings.concat2 "record type not in schema: " (Core.unName (Core.recordTypeName v0)))) (\t -> Right t)+ Core.TermInject v0 -> Optionals.match (Maps.lookup (Core.injectionTypeName v0) schema) (fail (Strings.concat2 "union type not in schema: " (Core.unName (Core.injectionTypeName v0)))) (\t -> Right t)+ Core.TermWrap v0 -> Optionals.match (Maps.lookup (Core.wrappedTermTypeName v0) schema) (fail (Strings.concat2 "wrapper type not in schema: " (Core.unName (Core.wrappedTermTypeName v0)))) (\t -> Right t)+ Core.TermAnnotated v0 -> recurseInto expected (Core.annotatedTermBody v0)+ Core.TermLet v0 -> recurseInto expected (Core.letBody v0)+ Core.TermProject v0 ->+ let tname = Core.projectionTypeName v0+ fname = Core.projectionFieldName v0+ in (Optionals.match (Maps.lookup tname schema) (fail (Strings.concat2 "projection type not in schema: " (Core.unName tname))) (\sty -> Eithers.bind (ExtractCore.recordType tname sty) (\fields -> Optionals.match (findFieldTypeIn fname fields) (fail (Strings.concat2 "projected field not in record type: " (Core.unName fname))) (\ftyp -> Right (Core.TypeFunction (Core.FunctionType {+ Core.functionTypeDomain = (Core.TypeVariable tname),+ Core.functionTypeCodomain = ftyp}))))))+ Core.TermUnwrap v0 -> Optionals.match (Maps.lookup v0 schema) (fail (Strings.concat2 "unwrap type not in schema: " (Core.unName v0))) (\sty -> Eithers.map (\inner -> Core.TypeFunction (Core.FunctionType {+ Core.functionTypeDomain = (Core.TypeVariable v0),+ Core.functionTypeCodomain = inner})) (ExtractCore.wrappedType v0 sty))+ Core.TermCases v0 ->+ let tname = Core.caseStatementTypeName v0+ rep =+ Optionals.match (Core.caseStatementDefault v0) (Optionals.map Core.caseAlternativeHandler (Lists.head (Core.caseStatementCases v0))) (\d -> Just d)+ in (Optionals.match rep (fail "case statement with no branches") (\handler -> Eithers.bind (recurseInto Nothing handler) (\htype -> Eithers.map (\ft -> Core.TypeFunction (Core.FunctionType {+ Core.functionTypeDomain = (Core.TypeVariable tname),+ Core.functionTypeCodomain = (Core.functionTypeCodomain ft)})) (ExtractCore.functionType htype))))+ _ -> fail "unsupported term constructor"++-- | The content attribute links contributed by a term constructor (a non-term constituent, with its value)+termAttributesOf :: Core.Term -> [Paths.TermAttributeLink]+termAttributesOf term =+ case term of+ Core.TermCases v0 -> [+ Paths.TermAttributeLinkCasesTypeName (Core.caseStatementTypeName v0)]+ Core.TermInject v0 -> [+ Paths.TermAttributeLinkInjectTypeName (Core.injectionTypeName v0)]+ Core.TermLambda v0 -> Lists.concat2 [+ Paths.TermAttributeLinkLambdaParameter (Core.lambdaParameter v0)] (Optionals.match (Core.lambdaDomain v0) [] (\d -> [+ Paths.TermAttributeLinkLambdaDomainGiven d]))+ Core.TermLiteral v0 -> [+ Paths.TermAttributeLinkLiteral v0]+ Core.TermProject v0 -> [+ Paths.TermAttributeLinkProjectTypeName (Core.projectionTypeName v0),+ (Paths.TermAttributeLinkProjectFieldName (Core.projectionFieldName v0))]+ Core.TermRecord v0 -> [+ Paths.TermAttributeLinkRecordTypeName (Core.recordTypeName v0)]+ Core.TermTypeApplication v0 -> [+ Paths.TermAttributeLinkTypeApplicationType (Core.typeApplicationTermType v0)]+ Core.TermTypeLambda v0 -> [+ Paths.TermAttributeLinkTypeLambdaParameter (Core.typeLambdaParameter v0)]+ Core.TermUnwrap v0 -> [+ Paths.TermAttributeLinkUnwrapTypeName v0]+ Core.TermWrap v0 -> [+ Paths.TermAttributeLinkWrapTypeName (Core.wrappedTermTypeName v0)]+ _ -> []++-- | Build a term-graph node (inline) for the subterm at the given path within a root binding. `env` maps each in-scope local variable to its (binder node id, type); `lambdaScope` marks the lambda-bound subset. `expected` is the type flowing top-down, consumed by synthesis-incomplete leaves. A variable child is not a node: the parent emits a reference link for it.+termGraphNode :: Graph.Graph -> M.Map Core.Name Core.Type -> Core.Name -> M.Map Core.Name (Paths.TermNodeId, Core.Type) -> S.Set Core.Name -> Maybe Core.Type -> Paths.SubtermPath -> Core.Term -> Either Errors.Error Paths.TermNode+termGraphNode graph schema root env lambdaScope expected path term =++ let steps = Paths.unSubtermPath path+ thisId =+ Paths.TermNodeId {+ Paths.termNodeIdRoot = root,+ Paths.termNodeIdPath = path}+ envTypes = Maps.map (\p -> Pairs.second p) env+ childEnv =+ case term of+ Core.TermLambda v0 -> Maps.insert (Core.lambdaParameter v0) (thisId, (Optionals.withDefault (Core.TypeVariable (Core.Name "?")) (Core.lambdaDomain v0))) env+ Core.TermLet v0 -> Lists.foldl (\acc -> \b ->+ let bname = Core.bindingName b+ bid =+ Paths.TermNodeId {+ Paths.termNodeIdRoot = root,+ Paths.termNodeIdPath = (Paths.SubtermPath (Lists.concat2 steps [+ Paths.SubtermStepLetBinding bname]))}+ btype = Optionals.withDefault (Core.TypeVariable (Core.Name "?")) (Optionals.map Core.typeSchemeBody (Core.bindingTypeScheme b))+ in (Maps.insert bname (bid, btype) acc)) env (Core.letBindings v0)+ _ -> env+ childLambdaScope =+ case term of+ Core.TermLambda v0 -> Sets.insert (Core.lambdaParameter v0) lambdaScope+ _ -> lambdaScope+ in (Eithers.bind (synthesizeType graph schema envTypes root expected path term) (\typ ->+ let attrLinks = Lists.map (\x -> Paths.TermLinkAttribute x) (termAttributesOf term)+ in (Eithers.bind (Eithers.mapList (\st ->+ let step = Pairs.first st+ child = Pairs.second st+ childPath = Paths.SubtermPath (Lists.concat2 steps [+ step])+ childExpected = expectedForStep schema typ term step+ in case child of+ Core.TermVariable v0 -> Eithers.map (\ref -> Paths.TermLinkReference (Paths.TermReferenceLink {+ Paths.termReferenceLinkStep = step,+ Paths.termReferenceLinkTarget = ref})) (termReferenceFor graph childEnv childLambdaScope v0)+ _ -> Eithers.map (\cnode -> Paths.TermLinkSubterm (Paths.SubtermLink {+ Paths.subtermLinkStep = step,+ Paths.subtermLinkChild = cnode})) (termGraphNode graph schema root childEnv childLambdaScope childExpected childPath child)) (Rewriting.subtermsWithSteps term)) (\childLinks -> Right (Paths.TermNode {+ Paths.termNodeTerm = term,+ Paths.termNodeType = typ,+ Paths.termNodeLinks = (Lists.concat2 attrLinks childLinks)})))))++-- | Classify a variable occurrence, carrying its binder's node id: lambda-bound (node = the binding lambda), let-bound — locally or as a graph binding — (node = the bound term), or a primitive; a free variable is a precondition failure. `lambdaScope` marks which local names are lambda-bound.+termReferenceFor :: Graph.Graph -> M.Map Core.Name (Paths.TermNodeId, Core.Type) -> S.Set Core.Name -> Core.Name -> Either Errors.Error Paths.TermReference+termReferenceFor graph env lambdaScope name =+ Optionals.match (Maps.lookup name env) (Logic.ifElse (Maps.member name (Graph.graphBoundTerms graph)) (Right (Paths.TermReferenceLet (Paths.LetVariableReference {+ Paths.letVariableReferenceVariable = name,+ Paths.letVariableReferenceBindingNode = Paths.TermNodeId {+ Paths.termNodeIdRoot = name,+ Paths.termNodeIdPath = (Paths.SubtermPath [])},+ Paths.letVariableReferenceType = (Optionals.withDefault (Core.TypeVariable (Core.Name "?")) (Optionals.map Core.typeSchemeBody (Maps.lookup name (Graph.graphBoundTypes graph))))}))) (Logic.ifElse (Maps.member name (Graph.graphPrimitives graph)) (Right (Paths.TermReferencePrimitive (Paths.PrimitiveReference {+ Paths.primitiveReferenceName = name,+ Paths.primitiveReferenceType = (Core.TypeVariable (Core.Name "?"))}))) (Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "free variable in term graph: " (Core.unName name))))))) (\idType ->+ let binderId = Pairs.first idType+ occType = Pairs.second idType+ in (Logic.ifElse (Sets.member name lambdaScope) (Right (Paths.TermReferenceLambda (Paths.LambdaVariableReference {+ Paths.lambdaVariableReferenceVariable = name,+ Paths.lambdaVariableReferenceBoundByNode = binderId,+ Paths.lambdaVariableReferenceType = occType}))) (Right (Paths.TermReferenceLet (Paths.LetVariableReference {+ Paths.letVariableReferenceVariable = name,+ Paths.letVariableReferenceBindingNode = binderId,+ Paths.letVariableReferenceType = occType})))))++-- | The content attribute links contributed by a type constructor: annotation, forall parameter, or literal type+typeAttributesOf :: Core.Type -> [Paths.TypeAttributeLink]+typeAttributesOf typ =+ case typ of+ Core.TypeAnnotated v0 -> [+ Paths.TypeAttributeLinkAnnotatedAnnotation (Core.annotatedTypeAnnotation v0)]+ Core.TypeForall v0 -> [+ Paths.TypeAttributeLinkForallParameter (Core.forallTypeParameter v0)]+ Core.TypeLiteral v0 -> [+ Paths.TypeAttributeLinkLiteral v0]+ _ -> []++-- | Build a type-graph node (inline) for the subtype at the given path within a named root type+typeGraphNode :: S.Set Core.Name -> Core.Name -> M.Map Core.Name Paths.TypeNodeId -> Paths.SubtypePath -> Core.Type -> Either Errors.Error Paths.TypeNode+typeGraphNode schemaNames root forallScope path typ =+ Eithers.map (\links -> Paths.TypeNode {+ Paths.typeNodeType = typ,+ Paths.typeNodeLinks = links}) (typeLinks schemaNames root forallScope path typ)++-- | The outgoing links of a type node: its content attributes, and one link per immediate subtype — a variable occurrence becomes a reference link on the parent (occurrences are not nodes), any other subtype an inline subtype link. `forallScope` maps each in-scope forall variable to its binding node id.+typeLinks :: S.Set Core.Name -> Core.Name -> M.Map Core.Name Paths.TypeNodeId -> Paths.SubtypePath -> Core.Type -> Either Errors.Error [Paths.TypeLink]+typeLinks schemaNames root forallScope path typ =++ let steps = Paths.unSubtypePath path+ thisId =+ Paths.TypeNodeId {+ Paths.typeNodeIdRoot = root,+ Paths.typeNodeIdPath = path}+ attrLinks = Lists.map (\x -> Paths.TypeLinkAttribute x) (typeAttributesOf typ)+ childScope =+ case typ of+ Core.TypeForall v0 -> Maps.insert (Core.forallTypeParameter v0) thisId forallScope+ _ -> forallScope+ in (Eithers.bind (Eithers.mapList (\st ->+ let step = Pairs.first st+ child = Pairs.second st+ childPath = Paths.SubtypePath (Lists.concat2 steps [+ step])+ in case child of+ Core.TypeVariable v0 -> Eithers.map (\ref -> Paths.TypeLinkReference (Paths.TypeReferenceLink {+ Paths.typeReferenceLinkStep = step,+ Paths.typeReferenceLinkTarget = ref})) (typeReferenceFor schemaNames childScope v0)+ _ -> Eithers.map (\cnode -> Paths.TypeLinkSubtype (Paths.SubtypeLink {+ Paths.subtypeLinkStep = step,+ Paths.subtypeLinkChild = cnode})) (typeGraphNode schemaNames root childScope childPath child)) (Rewriting.subtypesWithSteps typ)) (\childLinks -> Right (Lists.concat2 attrLinks childLinks)))++-- | Classify a type variable occurrence: a schema-bound name is a nominal reference; a forall-bound variable in scope is a variable reference carrying its binding forall's node id; anything else is a free-variable precondition failure.+typeReferenceFor :: S.Set Core.Name -> M.Map Core.Name Paths.TypeNodeId -> Core.Name -> Either Errors.Error Paths.TypeReference+typeReferenceFor schemaNames forallScope name =+ Logic.ifElse (Sets.member name schemaNames) (Right (Paths.TypeReferenceNominal (Paths.NominalTypeReference {+ Paths.nominalTypeReferenceName = name}))) (Optionals.match (Maps.lookup name forallScope) (Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "free type variable in type graph: " (Core.unName name))))) (\binderId -> Right (Paths.TypeReferenceVariable (Paths.TypeVariableReference {+ Paths.typeVariableReferenceVariable = name,+ Paths.typeVariableReferenceBoundByNode = binderId}))))
src/main/haskell/Hydra/Templates.hs view
@@ -86,7 +86,7 @@ \lt -> case lt of Core.LiteralTypeBinary -> Core.LiteralString "" Core.LiteralTypeBoolean -> Core.LiteralBoolean False- Core.LiteralTypeDecimal -> Core.LiteralDecimal (Literals.stringToDecimal "0.0")+ Core.LiteralTypeDecimal -> Core.LiteralDecimal (Literals.stringToDecimal "0") Core.LiteralTypeInteger v0 -> Core.LiteralInteger (forInteger v0) Core.LiteralTypeFloat v0 -> Core.LiteralFloat (forFloat v0) Core.LiteralTypeString -> Core.LiteralString ""
src/main/haskell/Hydra/Test/Transform.hs view
@@ -94,7 +94,8 @@ Util.CaseConventionLowerSnake -> Core.Name "lowerSnake" Util.CaseConventionUpperSnake -> Core.Name "upperSnake" Util.CaseConventionCamel -> Core.Name "camel"- Util.CaseConventionPascal -> Core.Name "pascal",+ Util.CaseConventionPascal -> Core.Name "pascal"+ Util.CaseConventionUpperDashed -> Core.Name "upperDashed", Core.fieldTerm = Core.TermUnit}}) -- | Encode Either [[Int]] [Int] as a Term
src/main/haskell/Hydra/Test/Utils.hs view
@@ -54,11 +54,13 @@ tcase = Testing.testCaseWithMetadataCase tcm desc = Testing.testCaseWithMetadataDescription tcm tags_ = Testing.testCaseWithMetadataTags tcm+ provisions_ = Testing.testCaseWithMetadataProvisions tcm in (Eithers.map (\inferredCase -> Testing.TestCaseWithMetadata { Testing.testCaseWithMetadataName = name_, Testing.testCaseWithMetadataCase = inferredCase, Testing.testCaseWithMetadataDescription = desc,- Testing.testCaseWithMetadataTags = tags_}) (Right tcase))+ Testing.testCaseWithMetadataTags = tags_,+ Testing.testCaseWithMetadataProvisions = provisions_}) (Right tcase)) -- | Run type inference on all terms in a TestGroup to ensure lambdas have domain types inferTestGroupTerms :: t0 -> Testing.TestGroup -> Either t1 Testing.TestGroup
src/main/haskell/Hydra/Testing.hs view
@@ -54,7 +54,9 @@ -- | An optional longer description of the test case testCaseWithMetadataDescription :: (Maybe String), -- | Zero or more tags for the test case- testCaseWithMetadataTags :: [Tag]}+ testCaseWithMetadataTags :: [Tag],+ -- | The fully-qualified names of zero or more provisions (hydra.packaging.Provision) which this test case confirms. A provision is authoritative with zero, one, or many confirming tests.+ testCaseWithMetadataProvisions :: [Core.Name]} _TestCaseWithMetadata = Core.Name "hydra.testing.TestCaseWithMetadata" @@ -65,6 +67,8 @@ _TestCaseWithMetadata_description = Core.Name "description" _TestCaseWithMetadata_tags = Core.Name "tags"++_TestCaseWithMetadata_provisions = Core.Name "provisions" -- | A collection of test cases with a name and optional description data TestGroup =
src/main/haskell/Hydra/Util.hs view
@@ -16,7 +16,8 @@ CaseConventionCamel | CaseConventionPascal | CaseConventionLowerSnake |- CaseConventionUpperSnake+ CaseConventionUpperSnake |+ CaseConventionUpperDashed deriving (Eq, Ord, Read, Show) _CaseConvention = Core.Name "hydra.util.CaseConvention"@@ -28,6 +29,8 @@ _CaseConvention_lowerSnake = Core.Name "lowerSnake" _CaseConvention_upperSnake = Core.Name "upperSnake"++_CaseConvention_upperDashed = Core.Name "upperDashed" -- | An equality judgement: less than, equal to, or greater than data Comparison =
src/main/haskell/Hydra/Validate/Core.hs view
@@ -26,6 +26,7 @@ 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.Names as Names import qualified Hydra.Packaging as Packaging import qualified Hydra.Parsing as Parsing import qualified Hydra.Paths as Paths@@ -333,9 +334,20 @@ (Logic.ifElse (enabled p (Core.Name "hydra.error.core.InvalidTermError.invalidTypeLambdaParameterName")) (Optionals.map (\f -> (Core.Name "hydra.error.core.InvalidTermError.invalidTypeLambdaParameterName", f)) (Logic.ifElse (isValidName tvName) Nothing (Just (ErrorCore.InvalidTermErrorInvalidTypeLambdaParameterName (ErrorCore.InvalidTypeLambdaParameterNameError { ErrorCore.invalidTypeLambdaParameterNameErrorLocation = path, ErrorCore.invalidTypeLambdaParameterNameErrorName = tvName}))))) Nothing)])- Core.TermVariable v0 -> Logic.ifElse (enabled p (Core.Name "hydra.error.core.InvalidTermError.undefinedTermVariable")) (Optionals.map (\f -> (Core.Name "hydra.error.core.InvalidTermError.undefinedTermVariable", f)) (Logic.ifElse (Logic.or (Optionals.isGiven (Maps.lookup v0 (Graph.graphBoundTerms cx))) (Logic.or (Sets.member v0 (Graph.graphLambdaVariables cx)) (Optionals.isGiven (Maps.lookup v0 (Graph.graphPrimitives cx))))) Nothing (Just (ErrorCore.InvalidTermErrorUndefinedTermVariable (ErrorCore.UndefinedTermVariableError {- ErrorCore.undefinedTermVariableErrorLocation = path,- ErrorCore.undefinedTermVariableErrorName = v0}))))) Nothing+ Core.TermVariable v0 ->+ let looksQualified = Optionals.isGiven (Names.moduleNameOf v0)+ isBoundTerm = Optionals.isGiven (Maps.lookup v0 (Graph.graphBoundTerms cx))+ isPrimitive = Optionals.isGiven (Maps.lookup v0 (Graph.graphPrimitives cx))+ in (firstFinding [+ Logic.ifElse (enabled p (Core.Name "hydra.error.core.InvalidTermError.undefinedTermVariable")) (Optionals.map (\f -> (Core.Name "hydra.error.core.InvalidTermError.undefinedTermVariable", f)) (Logic.ifElse (Logic.or looksQualified (Logic.or isBoundTerm (Logic.or (Sets.member v0 (Graph.graphLambdaVariables cx)) isPrimitive))) Nothing (Just (ErrorCore.InvalidTermErrorUndefinedTermVariable (ErrorCore.UndefinedTermVariableError {+ ErrorCore.undefinedTermVariableErrorLocation = path,+ ErrorCore.undefinedTermVariableErrorName = v0}))))) Nothing,+ (Logic.ifElse (enabled p (Core.Name "hydra.error.core.InvalidTermError.unknownPrimitiveName")) (Optionals.map (\f -> (Core.Name "hydra.error.core.InvalidTermError.unknownPrimitiveName", f)) (Logic.ifElse (Logic.and looksQualified (Logic.and (Logic.not isPrimitive) (Logic.not isBoundTerm))) (Just (ErrorCore.InvalidTermErrorUnknownPrimitiveName (ErrorCore.UnknownPrimitiveNameError {+ ErrorCore.unknownPrimitiveNameErrorLocation = path,+ ErrorCore.unknownPrimitiveNameErrorName = v0}))) Nothing)) Nothing),+ (Logic.ifElse (enabled p (Core.Name "hydra.error.core.InvalidTermError.untypedTermVariable")) (Optionals.map (\f -> (Core.Name "hydra.error.core.InvalidTermError.untypedTermVariable", f)) (Logic.ifElse (Logic.and typed (Logic.and (Sets.member v0 (Graph.graphLambdaVariables cx)) (Logic.not (Optionals.isGiven (Maps.lookup v0 (Graph.graphBoundTypes cx)))))) (Just (ErrorCore.InvalidTermErrorUntypedTermVariable (ErrorCore.UntypedTermVariableError {+ ErrorCore.untypedTermVariableErrorLocation = path,+ ErrorCore.untypedTermVariableErrorName = v0}))) Nothing)) Nothing)]) Core.TermWrap v0 -> let tname = Core.wrappedTermTypeName v0 resolved = resolveNominalType cx tname
src/main/haskell/Hydra/Validate/Packaging.hs view
@@ -256,6 +256,51 @@ in (Logic.ifElse (LibRegex.matches Constants.regexNamespace (Packaging.unModuleName ns)) Nothing (Just (ErrorPackaging.InvalidModuleErrorInvalidModuleNameConvention (ErrorPackaging.InvalidModuleNameConventionError { ErrorPackaging.invalidModuleNameConventionErrorModuleName = ns})))) +-- | Check that no module namespace is declared by more than one package, across the whole universe of packages.+checkModulePartition :: [(String, [Packaging.ModuleName])] -> [ErrorPackaging.InvalidPackageError]+checkModulePartition pkgs =++ let declaredPairs = Lists.concat (Lists.map (\p -> Lists.map (\m -> (m, (Pairs.first p))) (Pairs.second p)) pkgs)+ result =+ Lists.foldl (\acc -> \pair_ ->+ let seen = Pairs.first acc+ findings = Pairs.second acc+ ns = Pairs.first pair_+ pkg = Pairs.second pair_+ existing = Maps.lookup ns seen+ in (Optionals.match existing (Maps.insert ns pkg seen, findings) (\firstPkg -> Logic.ifElse (Equality.equal firstPkg pkg) acc (+ seen,+ (Lists.concat2 findings (Lists.singleton (ErrorPackaging.InvalidPackageErrorModuleInMultiplePackages (ErrorPackaging.ModuleInMultiplePackagesError {+ ErrorPackaging.moduleInMultiplePackagesErrorModuleName = ns,+ ErrorPackaging.moduleInMultiplePackagesErrorFirstPackage = (Packaging.PackageName firstPkg),+ ErrorPackaging.moduleInMultiplePackagesErrorSecondPackage = (Packaging.PackageName pkg)})))))))) (Maps.empty, []) declaredPairs+ in (Pairs.second result)++-- | Check for module namespaces that are a strict dotted-prefix of another module namespace in the same package+checkNestedModuleNames :: Packaging.Package -> Maybe ErrorPackaging.InvalidPackageError+checkNestedModuleNames pkg =++ let isDottedPrefixOf =+ \a -> \b ->+ let prefix = Strings.concat2 a "."+ prefixLen = Strings.length prefix+ in (Logic.and (Ordering.lte prefixLen (Strings.length b)) (Equality.equal (Strings.fromList (Lists.take prefixLen (Strings.toList b))) prefix))+ findNesting =+ \candidate -> \seen -> Lists.foldl (\acc -> \other -> Optionals.match acc (Logic.ifElse (isDottedPrefixOf other candidate) (Just (other, candidate)) (Logic.ifElse (isDottedPrefixOf candidate other) (Just (candidate, other)) Nothing)) (\_ -> acc)) Nothing seen+ result =+ Lists.foldl (\acc -> \mod ->+ let seen = Pairs.first acc+ err = Pairs.second acc+ in (Optionals.match err (+ let nsStr = Packaging.unModuleName (Packaging.moduleName mod)+ nesting = findNesting nsStr seen+ in (Optionals.match nesting (Lists.concat2 seen (Lists.singleton nsStr), Nothing) (\op -> (+ seen,+ (Just (ErrorPackaging.InvalidPackageErrorNestedModuleName (ErrorPackaging.NestedModuleNameError {+ ErrorPackaging.nestedModuleNameErrorOuter = (Packaging.ModuleName (Pairs.first op)),+ ErrorPackaging.nestedModuleNameErrorInner = (Packaging.ModuleName (Pairs.second op))}))))))) (\_ -> acc))) ([], Nothing) (Packaging.packageModules pkg)+ in (Pairs.second result)+ -- | Check that the package's name matches the hyphen-separated lowercase naming convention checkPackageNameConvention :: Packaging.Package -> Maybe ErrorPackaging.InvalidPackageError checkPackageNameConvention pkg =@@ -311,7 +356,8 @@ (Core.Name "hydra.error.packaging.InvalidModuleError.missingDocumentation"), (Core.Name "hydra.error.packaging.InvalidPackageError.conflictingModuleName"), (Core.Name "hydra.error.packaging.InvalidPackageError.duplicateModuleName"),- (Core.Name "hydra.error.packaging.InvalidPackageError.invalidPackageName")]),+ (Core.Name "hydra.error.packaging.InvalidPackageError.invalidPackageName"),+ (Core.Name "hydra.error.packaging.InvalidPackageError.nestedModuleName")]), Validation.validationProfileWarningRules = Sets.empty, Validation.validationProfileMaxErrors = 1, Validation.validationProfileMaxWarnings = 20}@@ -341,7 +387,8 @@ (Core.Name "hydra.error.packaging.InvalidModuleError.invalidModuleNameConvention"), (Core.Name "hydra.error.packaging.InvalidPackageError.conflictingModuleName"), (Core.Name "hydra.error.packaging.InvalidPackageError.duplicateModuleName"),- (Core.Name "hydra.error.packaging.InvalidPackageError.invalidPackageName")]),+ (Core.Name "hydra.error.packaging.InvalidPackageError.invalidPackageName"),+ (Core.Name "hydra.error.packaging.InvalidPackageError.nestedModuleName")]), Validation.validationProfileWarningRules = (Sets.fromList [ Core.Name "hydra.error.packaging.InvalidModuleError.missingDocumentation", (Core.Name "hydra.error.packaging.InvalidModuleError.definitionsOutOfOrder"),@@ -376,7 +423,8 @@ Lists.foldl (\acc -> \guarded -> Logic.ifElse (Ordering.gte (Lists.length (Validation.validationResultErrors acc)) (Validation.validationProfileMaxErrors p)) acc (appendFindingPackage p acc guarded)) acc0 [ Logic.ifElse (enabledPackaging p (Core.Name "hydra.error.packaging.InvalidPackageError.conflictingModuleName")) (Optionals.map (\f -> (Core.Name "hydra.error.packaging.InvalidPackageError.conflictingModuleName", f)) (checkConflictingModuleNames pkg)) Nothing, (Logic.ifElse (enabledPackaging p (Core.Name "hydra.error.packaging.InvalidPackageError.duplicateModuleName")) (Optionals.map (\f -> (Core.Name "hydra.error.packaging.InvalidPackageError.duplicateModuleName", f)) (checkDuplicateModuleNames pkg)) Nothing),- (Logic.ifElse (enabledPackaging p (Core.Name "hydra.error.packaging.InvalidPackageError.invalidPackageName")) (Optionals.map (\f -> (Core.Name "hydra.error.packaging.InvalidPackageError.invalidPackageName", f)) (checkPackageNameConvention pkg)) Nothing)]+ (Logic.ifElse (enabledPackaging p (Core.Name "hydra.error.packaging.InvalidPackageError.invalidPackageName")) (Optionals.map (\f -> (Core.Name "hydra.error.packaging.InvalidPackageError.invalidPackageName", f)) (checkPackageNameConvention pkg)) Nothing),+ (Logic.ifElse (enabledPackaging p (Core.Name "hydra.error.packaging.InvalidPackageError.nestedModuleName")) (Optionals.map (\f -> (Core.Name "hydra.error.packaging.InvalidPackageError.nestedModuleName", f)) (checkNestedModuleNames pkg)) Nothing)] in (Lists.foldl (\acc -> \mod -> Logic.ifElse (Ordering.gte (Lists.length (Validation.validationResultErrors acc)) (Validation.validationProfileMaxErrors p)) acc ( let mr = module_ p (Validation.ValidationResult {
+ src/main/haskell/Hydra/Validate/Paths.hs view
@@ -0,0 +1,74 @@+-- Note: this is an automatically generated file. Do not edit.++-- | The TermGraph : TypeGraph conformance relation: path erasure (a subterm position maps to the subtype position of its type) plus node typing, partial on the computation fragment.++module Hydra.Validate.Paths 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.Logic as Logic+import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals+import qualified Hydra.Overlay.Haskell.Lib.Pairs as Pairs+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 Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)+import qualified Data.Scientific as Sci+import Data.Void++-- | Erase a subterm path to the subtype path of its type, if wholly within the data fragment+eraseSubtermPath :: Paths.SubtermPath -> Maybe Paths.SubtypePath+eraseSubtermPath path =++ let steps = Paths.unSubtermPath path+ go =+ \acc -> \step -> Optionals.match acc Nothing (\stateP ->+ let out = Pairs.first stateP+ pendingEntry = Pairs.second stateP+ in (Logic.ifElse pendingEntry (case step of+ Paths.SubtermStepPairFirst -> Just (Lists.concat2 out [+ Paths.SubtypeStepMapKeys], False)+ Paths.SubtermStepPairSecond -> Just (Lists.concat2 out [+ Paths.SubtypeStepMapValues], False)+ _ -> Nothing) (case step of+ Paths.SubtermStepMapEntry _ -> Just (out, True)+ _ -> Optionals.map (\st -> (Lists.concat2 out [+ st], False)) (eraseSubtermStep step))))+ result = Lists.foldl go (Just ([], False)) steps+ in (Optionals.bind result (\stateP -> Logic.ifElse (Pairs.second stateP) Nothing (Just (Paths.SubtypePath (Pairs.first stateP)))))++-- | The subtype-side analog of a subterm step on the data fragment, or nothing on the computation fragment+eraseSubtermStep :: Paths.SubtermStep -> Maybe Paths.SubtypeStep+eraseSubtermStep step =+ case step of+ Paths.SubtermStepListElement _ -> Just Paths.SubtypeStepListElement+ Paths.SubtermStepSetElement _ -> Just Paths.SubtypeStepSetElement+ Paths.SubtermStepOptionalGiven -> Just Paths.SubtypeStepOptionalElement+ Paths.SubtermStepInjectField v0 -> Just (Paths.SubtypeStepUnionField v0)+ Paths.SubtermStepRecordField v0 -> Just (Paths.SubtypeStepRecordField v0)+ _ -> Nothing