Safe Haskell | None |
---|---|
Language | Haskell2010 |
Language.Haskell.Extensions.Abstract
Description
The abstract node types forming a Haskell module with language extensions. Every node type has
the kind TreeNodeKind
.
Synopsis
- type family ExtensionsSupportedBy λ :: [Extension]
- type SupportFor (e :: Extension) l = If (Elem e (ExtensionsSupportedBy l)) () Void
- type Supports (e :: Extension) l = SupportFor e l ~ ()
- type SupportsNo (e :: Extension) l = SupportFor e l ~ Void
- type family SupportsAllOf (es :: [Extension]) l where ...
- type family ExtendedWithAllOf (es :: [Extension]) l where ...
- class SupportsAllOf es λ => ExtendedWith (es :: [Extension]) λ where
- data family Construct (es :: [Extension]) :: TreeNodeKind
- class (Haskell λ, ExtendedWithAllOf '['MagicHash, 'ExtendedLiterals, 'ParallelListComprehensions, 'ExplicitNamespaces, 'NamedFieldPuns, 'RecordWildCards, 'RecursiveDo, 'QualifiedDo, 'LambdaCase, 'TupleSections, 'UnboxedTuples, 'UnboxedSums, 'InterruptibleFFI, 'CApiFFI, 'StrictData, 'Strict, 'BangPatterns, 'ViewPatterns, 'NPlusKPatterns, 'NamedDefaults, 'PatternSynonyms, 'ImplicitParameters, 'StandaloneDeriving, 'DerivingStrategies, 'DerivingVia, 'DefaultSignatures, 'TypeData, 'TypeAbstractions, 'FunctionalDependencies] λ, ExtendedWith '['GADTs, 'TypeData] λ, ExtendedWith '['QualifiedDo, 'RecursiveDo] λ) => ExtendedHaskell λ where
- type GADTConstructor λ = (x :: TreeNodeSubKind) | x -> λ
- type Kind λ = (x :: TreeNodeSubKind) | x -> λ
- type TypeVarBinding λ = (x :: TreeNodeSubKind) | x -> λ
- type ModuleMember λ = (x :: Type) | x -> λ
- type TypeRole λ = (x :: Type) | x -> λ
- hashLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Value λ l d s -> Value λ l d s
- mdoExpression :: forall s l (d :: NodeWrap). s (GuardedExpression l l d d) -> Expression λ l d s
- parallelListComprehension :: forall s l (d :: NodeWrap). s (Expression l l d d) -> NonEmpty (s (Statement l l d d)) -> NonEmpty (s (Statement l l d d)) -> [NonEmpty (s (Statement l l d d))] -> Expression λ l d s
- tupleSectionExpression :: forall s l (d :: NodeWrap). NonEmpty (Maybe (s (Expression l l d d))) -> Expression λ l d s
- multiWayIfExpression :: forall s l (d :: NodeWrap). [s (GuardedExpression l l d d)] -> Expression λ l d s
- overloadedLabel :: forall l (d :: NodeWrap) (s :: NodeWrap). Text -> Expression λ l d s
- getField :: forall s l (d :: NodeWrap). s (Expression l l d d) -> Name λ -> Expression λ l d s
- fieldProjection :: forall l (d :: NodeWrap) (s :: NodeWrap). NonEmpty (Name λ) -> Expression λ l d s
- wildcardRecordExpression :: forall s l (d :: NodeWrap). QualifiedName λ -> [s (FieldBinding l l d d)] -> Expression λ l d s
- recursiveStatement :: forall s l (d :: NodeWrap). [s (Statement l l d d)] -> Statement λ l d s
- safeImportDeclaration :: forall s l (d :: NodeWrap). Bool -> ModuleName λ -> Maybe (ModuleName λ) -> Maybe (s (ImportSpecification l l d d)) -> Import λ l d s
- packageQualifiedImportDeclaration :: forall s l (d :: NodeWrap). Bool -> Text -> ModuleName λ -> Maybe (ModuleName λ) -> Maybe (s (ImportSpecification l l d d)) -> Import λ l d s
- safePackageQualifiedImportDeclaration :: forall s l (d :: NodeWrap). Bool -> Text -> ModuleName λ -> Maybe (ModuleName λ) -> Maybe (s (ImportSpecification l l d d)) -> Import λ l d s
- infixTypeApplication :: forall s l (d :: NodeWrap). s (Type l l d d) -> QualifiedName λ -> s (Type l l d d) -> Type λ l d s
- infixTypeLHSApplication :: forall l (d :: NodeWrap) (s :: NodeWrap). TypeVarBinding λ l d s -> Name λ -> TypeVarBinding λ l d s -> TypeLHS λ l d s
- typeLHSApplication :: forall s l (d :: NodeWrap). s (TypeLHS l l d d) -> TypeVarBinding λ l d s -> TypeLHS λ l d s
- simpleKindedTypeLHS :: forall l (d :: NodeWrap) (s :: NodeWrap). Name λ -> [TypeVarBinding λ l d s] -> TypeLHS λ l d s
- existentialConstructor :: forall l (d :: NodeWrap) s. [TypeVarBinding λ l d s] -> s (Context l l d d) -> s (DataConstructor l l d d) -> DataConstructor λ l d s
- explicitlyScopedInstanceDeclaration :: forall l (d :: NodeWrap) s. [TypeVarBinding λ l d s] -> s (Context l l d d) -> s (ClassInstanceLHS l l d d) -> [s (Declaration l l d d)] -> Declaration λ l d s
- forallType :: forall l (d :: NodeWrap) s. [TypeVarBinding λ l d s] -> s (Type l l d d) -> Type λ l d s
- constrainedType :: forall s l (d :: NodeWrap). s (Context l l d d) -> s (Type l l d d) -> Type λ l d s
- kindedType :: forall s l (d :: NodeWrap). s (Type l l d d) -> s (Kind l l d d) -> Type λ l d s
- typeWildcard :: forall l (d :: NodeWrap) (s :: NodeWrap). Type λ l d s
- groundType :: forall l (d :: NodeWrap) (s :: NodeWrap). Type λ l d s
- explicitlyKindedTypeVariable :: forall s l (d :: NodeWrap). Name λ -> s (Kind l l d d) -> TypeVarBinding λ l d s
- implicitlyKindedTypeVariable :: forall l (d :: NodeWrap) (s :: NodeWrap). Name λ -> TypeVarBinding λ l d s
- inferredTypeVariable :: forall l (d :: NodeWrap) (s :: NodeWrap). Name λ -> TypeVarBinding λ l d s
- inferredExplicitlyKindedTypeVariable :: forall s l (d :: NodeWrap). Name λ -> s (Kind l l d d) -> TypeVarBinding λ l d s
- typeKind :: forall s l (d :: NodeWrap). s (Type l l d d) -> Kind λ l d s
- groundTypeKind :: forall l (d :: NodeWrap) (s :: NodeWrap). Type λ l d s
- typeRoleDeclaration :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName λ -> [TypeRole λ] -> Declaration λ l d s
- kindedDataDeclaration :: forall s l (d :: NodeWrap). s (Context l l d d) -> s (TypeLHS l l d d) -> s (Kind l l d d) -> [s (DataConstructor l l d d)] -> [s (DerivingClause l l d d)] -> Declaration λ l d s
- kindedNewtypeDeclaration :: forall s l (d :: NodeWrap). s (Context l l d d) -> s (TypeLHS l l d d) -> s (Kind l l d d) -> s (DataConstructor l l d d) -> [s (DerivingClause l l d d)] -> Declaration λ l d s
- gadtDeclaration :: forall s l (d :: NodeWrap). s (TypeLHS l l d d) -> Maybe (s (Kind l l d d)) -> [s (GADTConstructor l l d d)] -> [s (DerivingClause l l d d)] -> Declaration λ l d s
- gadtNewtypeDeclaration :: forall s l (d :: NodeWrap). s (TypeLHS l l d d) -> Maybe (s (Kind l l d d)) -> s (GADTConstructor l l d d) -> [s (DerivingClause l l d d)] -> Declaration λ l d s
- gadtConstructors :: forall l (d :: NodeWrap) s. NonEmpty (Name λ) -> [TypeVarBinding λ l d s] -> s (Context l l d d) -> s (Type l l d d) -> GADTConstructor λ l d s
- recordFunctionType :: forall s l (d :: NodeWrap). [s (FieldDeclaration l l d d)] -> s (Type l l d d) -> Type λ l d s
- multiplicityFunctionType :: forall s l (d :: NodeWrap). s (Type l l d d) -> s (Type l l d d) -> s (Type l l d d) -> Type λ l d s
- linearFunctionType :: forall s l (d :: NodeWrap). s (Type l l d d) -> s (Type l l d d) -> Type λ l d s
- punnedFieldBinding :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName λ -> FieldBinding λ l d s
- punnedFieldPattern :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName λ -> FieldPattern λ l d s
- dataFamilyDeclaration :: forall s l (d :: NodeWrap). s (TypeLHS l l d d) -> Maybe (s (Kind l l d d)) -> Declaration λ l d s
- openTypeFamilyDeclaration :: forall s l (d :: NodeWrap). s (TypeLHS l l d d) -> Maybe (s (Kind l l d d)) -> Declaration λ l d s
- closedTypeFamilyDeclaration :: forall s l (d :: NodeWrap). s (TypeLHS l l d d) -> Maybe (s (Kind l l d d)) -> [s (Declaration l l d d)] -> Declaration λ l d s
- injectiveOpenTypeFamilyDeclaration :: forall s l (d :: NodeWrap). s (TypeLHS l l d d) -> TypeVarBinding λ l d s -> Maybe (Name λ, NonEmpty (Name λ)) -> Declaration λ l d s
- injectiveClosedTypeFamilyDeclaration :: forall s l (d :: NodeWrap). s (TypeLHS l l d d) -> TypeVarBinding λ l d s -> Maybe (Name λ, NonEmpty (Name λ)) -> [s (Declaration l l d d)] -> Declaration λ l d s
- dataFamilyInstance :: forall l (d :: NodeWrap) s. [TypeVarBinding λ l d s] -> s (Context l l d d) -> s (ClassInstanceLHS l l d d) -> Maybe (s (Kind l l d d)) -> [s (DataConstructor l l d d)] -> [s (DerivingClause l l d d)] -> Declaration λ l d s
- newtypeFamilyInstance :: forall l (d :: NodeWrap) s. [TypeVarBinding λ l d s] -> s (Context l l d d) -> s (ClassInstanceLHS l l d d) -> Maybe (s (Kind l l d d)) -> s (DataConstructor l l d d) -> [s (DerivingClause l l d d)] -> Declaration λ l d s
- gadtDataFamilyInstance :: forall l (d :: NodeWrap) s. [TypeVarBinding λ l d s] -> s (ClassInstanceLHS l l d d) -> Maybe (s (Kind l l d d)) -> [s (GADTConstructor l l d d)] -> [s (DerivingClause l l d d)] -> Declaration λ l d s
- gadtNewtypeFamilyInstance :: forall l (d :: NodeWrap) s. [TypeVarBinding λ l d s] -> s (ClassInstanceLHS l l d d) -> Maybe (s (Kind l l d d)) -> s (GADTConstructor l l d d) -> [s (DerivingClause l l d d)] -> Declaration λ l d s
- typeFamilyInstance :: forall l (d :: NodeWrap) s. [TypeVarBinding λ l d s] -> s (ClassInstanceLHS l l d d) -> s (Type l l d d) -> Declaration λ l d s
- classReferenceInstanceLHS :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName λ -> ClassInstanceLHS λ l d s
- infixTypeClassInstanceLHS :: forall s l (d :: NodeWrap). s (Type l l d d) -> QualifiedName λ -> s (Type l l d d) -> ClassInstanceLHS λ l d s
- classInstanceLHSApplication :: forall s l (d :: NodeWrap). s (ClassInstanceLHS l l d d) -> s (Type l l d d) -> ClassInstanceLHS λ l d s
- classInstanceLHSKindApplication :: forall s l (d :: NodeWrap). s (ClassInstanceLHS l l d d) -> s (Kind l l d d) -> ClassInstanceLHS λ l d s
- kindSignature :: forall s l (d :: NodeWrap). Name λ -> s (Kind l l d d) -> Declaration λ l d s
- typeEquality :: forall s l (d :: NodeWrap). s (Type l l d d) -> s (Type l l d d) -> Context λ l d s
- typeConstraint :: forall s l (d :: NodeWrap). s (Type l l d d) -> Context λ l d s
- constraintType :: forall s l (d :: NodeWrap). s (Context l l d d) -> Type λ l d s
- inferredRole :: TypeRole λ
- nominalRole :: TypeRole λ
- representationalRole :: TypeRole λ
- phantomRole :: TypeRole λ
- promotedConstructorType :: forall s l (d :: NodeWrap). s (Constructor l l d d) -> Type λ l d s
- promotedTupleType :: forall s l (d :: NodeWrap). [s (Type l l d d)] -> Type λ l d s
- promotedListType :: forall s l (d :: NodeWrap). [s (Type l l d d)] -> Type λ l d s
- promotedIntegerLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Integer -> Type λ l d s
- promotedCharLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Char -> Type λ l d s
- promotedStringLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Text -> Type λ l d s
- promotedInfixTypeApplication :: forall s l (d :: NodeWrap). s (Type l l d d) -> QualifiedName λ -> s (Type l l d d) -> Type λ l d s
- visibleDependentType :: forall l (d :: NodeWrap) s. [TypeVarBinding λ l d s] -> s (Type l l d d) -> Type λ l d s
- visibleTypeApplication :: forall s l (d :: NodeWrap). s (Expression l l d d) -> s (Type l l d d) -> Expression λ l d s
- visibleKindApplication :: forall s l (d :: NodeWrap). s (Type l l d d) -> s (Kind l l d d) -> Type λ l d s
- typedPattern :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> s (Type l l d d) -> Pattern λ l d s
- constructorPatternWithTypeApplications :: forall s l (d :: NodeWrap). s (Constructor l l d d) -> [s (Type l l d d)] -> [s (Pattern l l d d)] -> Pattern λ l d s
- wildcardRecordPattern :: forall s l (d :: NodeWrap). QualifiedName λ -> [s (FieldPattern l l d d)] -> Pattern λ l d s
- type UniversallyApplicable t l (d :: NodeWrap) = (At t (GADTConstructor l l d d), At t (Kind l l d d), At t (TypeVarBinding l l d d), At t (DerivingStrategy l l d d), At t (FunctionalDependency l l d d), At t (PatternLHS l l d d), At t (PatternEquationLHS l l d d), At t (PatternEquationClause l l d d), UniversallyApplicable t l d)
- type DeeplyFunctor t l = (Functor t (GADTConstructor l l), Functor t (Kind l l), Functor t (TypeVarBinding l l), Functor t (DerivingStrategy l l), Functor t (FunctionalDependency l l), Functor t (PatternLHS l l), Functor t (PatternEquationLHS l l), Functor t (PatternEquationClause l l), DeeplyFunctor t l)
- type DeeplyFoldable t l = (Foldable t (GADTConstructor l l), Foldable t (Kind l l), Foldable t (TypeVarBinding l l), Foldable t (DerivingStrategy l l), Foldable t (FunctionalDependency l l), Foldable t (LambdaCasesAlternative l l), Foldable t (PatternLHS l l), Foldable t (PatternEquationLHS l l), Foldable t (PatternEquationClause l l), DeeplyFoldable t l)
- type DeeplyTraversable t l = (Traversable t (GADTConstructor l l), Traversable t (Kind l l), Traversable t (TypeVarBinding l l), Traversable t (DerivingStrategy l l), Traversable t (FunctionalDependency l l), Traversable t (PatternLHS l l), Traversable t (PatternEquationLHS l l), Traversable t (PatternEquationClause l l), DeeplyTraversable t l)
- type family DerivingStrategy λ :: TreeNodeSubKind
- type family FunctionalDependency λ :: TreeNodeSubKind
- type family LambdaCasesAlternative λ :: TreeNodeSubKind
- type family PatternLHS λ :: TreeNodeSubKind
- type family PatternEquationClause λ :: TreeNodeSubKind
- type family PatternEquationLHS λ :: TreeNodeSubKind
- type family Associativity λ = (x :: Type) | x -> λ
- type family CallSafety λ = (x :: Type) | x -> λ
- type family CallingConvention λ = (x :: Type) | x -> λ
- type family CaseAlternative λ = (x :: TreeNodeSubKind) | x -> λ
- type family ClassInstanceLHS λ = (x :: TreeNodeSubKind) | x -> λ
- type family Constructor λ = (x :: TreeNodeSubKind) | x -> λ
- type family Context λ = (x :: TreeNodeSubKind) | x -> λ
- type family DataConstructor λ = (x :: TreeNodeSubKind) | x -> λ
- type family Declaration λ = (x :: TreeNodeSubKind) | x -> λ
- type family DerivingClause λ = (x :: TreeNodeSubKind) | x -> λ
- type family EquationLHS λ = (x :: TreeNodeSubKind) | x -> λ
- type family EquationRHS λ = (x :: TreeNodeSubKind) | x -> λ
- type family Export λ = (x :: TreeNodeSubKind) | x -> λ
- type family Expression λ = (x :: TreeNodeSubKind) | x -> λ
- type family FieldBinding λ = (x :: TreeNodeSubKind) | x -> λ
- type family FieldDeclaration λ = (x :: TreeNodeSubKind) | x -> λ
- type family FieldPattern λ = (x :: TreeNodeSubKind) | x -> λ
- type family GuardedExpression λ = (x :: TreeNodeSubKind) | x -> λ
- class Haskell λ where
- type Module λ = (x :: TreeNodeSubKind) | x -> λ
- type Declaration λ = (x :: TreeNodeSubKind) | x -> λ
- type Expression λ = (x :: TreeNodeSubKind) | x -> λ
- type Type λ = (x :: TreeNodeSubKind) | x -> λ
- type EquationLHS λ = (x :: TreeNodeSubKind) | x -> λ
- type EquationRHS λ = (x :: TreeNodeSubKind) | x -> λ
- type GuardedExpression λ = (x :: TreeNodeSubKind) | x -> λ
- type Pattern λ = (x :: TreeNodeSubKind) | x -> λ
- type Statement λ = (x :: TreeNodeSubKind) | x -> λ
- type ClassInstanceLHS λ = (x :: TreeNodeSubKind) | x -> λ
- type TypeLHS λ = (x :: TreeNodeSubKind) | x -> λ
- type Import λ = (x :: TreeNodeSubKind) | x -> λ
- type ImportSpecification λ = (x :: TreeNodeSubKind) | x -> λ
- type ImportItem λ = (x :: TreeNodeSubKind) | x -> λ
- type Export λ = (x :: TreeNodeSubKind) | x -> λ
- type Context λ = (x :: TreeNodeSubKind) | x -> λ
- type DataConstructor λ = (x :: TreeNodeSubKind) | x -> λ
- type DerivingClause λ = (x :: TreeNodeSubKind) | x -> λ
- type FieldDeclaration λ = (x :: TreeNodeSubKind) | x -> λ
- type FieldBinding λ = (x :: TreeNodeSubKind) | x -> λ
- type FieldPattern λ = (x :: TreeNodeSubKind) | x -> λ
- type CaseAlternative λ = (x :: TreeNodeSubKind) | x -> λ
- type Constructor λ = (x :: TreeNodeSubKind) | x -> λ
- type Value λ = (x :: TreeNodeSubKind) | x -> λ
- type CallingConvention λ = (x :: Type) | x -> λ
- type CallSafety λ = (x :: Type) | x -> λ
- type Associativity λ = (x :: Type) | x -> λ
- type Members λ = (x :: Type) | x -> λ
- type Name λ = (x :: Type) | x -> λ
- type ModuleName λ = (x :: Type) | x -> λ
- type QualifiedName λ = (x :: Type) | x -> λ
- anonymousModule :: forall s l (d :: NodeWrap). [s (Import l l d d)] -> [s (Declaration l l d d)] -> Module λ l d s
- namedModule :: forall s l (d :: NodeWrap). ModuleName λ -> Maybe [s (Export l l d d)] -> [s (Import l l d d)] -> [s (Declaration l l d d)] -> Module λ l d s
- withLanguagePragma :: forall s l (d :: NodeWrap). [ExtensionSwitch] -> s (Module l l d d) -> Module λ l d s
- exportClassOrType :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName λ -> Maybe (Members λ) -> Export λ l d s
- exportVar :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName λ -> Export λ l d s
- reExportModule :: forall l (d :: NodeWrap) (s :: NodeWrap). ModuleName λ -> Export λ l d s
- importDeclaration :: forall s l (d :: NodeWrap). Bool -> ModuleName λ -> Maybe (ModuleName λ) -> Maybe (s (ImportSpecification l l d d)) -> Import λ l d s
- excludedImports :: forall s l (d :: NodeWrap). [s (ImportItem l l d d)] -> ImportSpecification λ l d s
- includedImports :: forall s l (d :: NodeWrap). [s (ImportItem l l d d)] -> ImportSpecification λ l d s
- importClassOrType :: forall l (d :: NodeWrap) (s :: NodeWrap). Name λ -> Maybe (Members λ) -> ImportItem λ l d s
- importVar :: forall l (d :: NodeWrap) (s :: NodeWrap). Name λ -> ImportItem λ l d s
- allMembers :: Members λ
- memberList :: [Name λ] -> Members λ
- classDeclaration :: forall s l (d :: NodeWrap). s (Context l l d d) -> s (TypeLHS l l d d) -> [s (Declaration l l d d)] -> Declaration λ l d s
- dataDeclaration :: forall s l (d :: NodeWrap). s (Context l l d d) -> s (TypeLHS l l d d) -> [s (DataConstructor l l d d)] -> [s (DerivingClause l l d d)] -> Declaration λ l d s
- defaultDeclaration :: forall s l (d :: NodeWrap). [s (Type l l d d)] -> Declaration λ l d s
- equationDeclaration :: forall s l (d :: NodeWrap). s (EquationLHS l l d d) -> s (EquationRHS l l d d) -> [s (Declaration l l d d)] -> Declaration λ l d s
- fixityDeclaration :: forall l (d :: NodeWrap) (s :: NodeWrap). Associativity λ -> Maybe Int -> NonEmpty (Name λ) -> Declaration λ l d s
- foreignExport :: forall s l (d :: NodeWrap). CallingConvention λ -> Maybe Text -> Name λ -> s (Type l l d d) -> Declaration λ l d s
- foreignImport :: forall s l (d :: NodeWrap). CallingConvention λ -> Maybe (CallSafety λ) -> Maybe Text -> Name λ -> s (Type l l d d) -> Declaration λ l d s
- instanceDeclaration :: forall s l (d :: NodeWrap). s (Context l l d d) -> s (ClassInstanceLHS l l d d) -> [s (Declaration l l d d)] -> Declaration λ l d s
- newtypeDeclaration :: forall s l (d :: NodeWrap). s (Context l l d d) -> s (TypeLHS l l d d) -> s (DataConstructor l l d d) -> [s (DerivingClause l l d d)] -> Declaration λ l d s
- typeSynonymDeclaration :: forall s l (d :: NodeWrap). s (TypeLHS l l d d) -> s (Type l l d d) -> Declaration λ l d s
- typeSignature :: forall s l (d :: NodeWrap). NonEmpty (Name λ) -> s (Context l l d d) -> s (Type l l d d) -> Declaration λ l d s
- applyExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> s (Expression l l d d) -> Expression λ l d s
- conditionalExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> s (Expression l l d d) -> s (Expression l l d d) -> Expression λ l d s
- constructorExpression :: forall s l (d :: NodeWrap). s (Constructor l l d d) -> Expression λ l d s
- caseExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> [s (CaseAlternative l l d d)] -> Expression λ l d s
- doExpression :: forall s l (d :: NodeWrap). s (GuardedExpression l l d d) -> Expression λ l d s
- infixExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> s (Expression l l d d) -> s (Expression l l d d) -> Expression λ l d s
- leftSectionExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> QualifiedName λ -> Expression λ l d s
- lambdaExpression :: forall s l (d :: NodeWrap). [s (Pattern l l d d)] -> s (Expression l l d d) -> Expression λ l d s
- letExpression :: forall s l (d :: NodeWrap). [s (Declaration l l d d)] -> s (Expression l l d d) -> Expression λ l d s
- listComprehension :: forall s l (d :: NodeWrap). s (Expression l l d d) -> NonEmpty (s (Statement l l d d)) -> Expression λ l d s
- listExpression :: forall s l (d :: NodeWrap). [s (Expression l l d d)] -> Expression λ l d s
- literalExpression :: forall s l (d :: NodeWrap). s (Value l l d d) -> Expression λ l d s
- negate :: forall l (d :: NodeWrap) (s :: NodeWrap). Expression λ l d s
- recordExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> [s (FieldBinding l l d d)] -> Expression λ l d s
- referenceExpression :: forall l (d :: NodeWrap). QualifiedName λ -> Expression λ l d d
- rightSectionExpression :: forall s l (d :: NodeWrap). QualifiedName λ -> s (Expression l l d d) -> Expression λ l d s
- sequenceExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> Maybe (s (Expression l l d d)) -> Maybe (s (Expression l l d d)) -> Expression λ l d s
- tupleExpression :: forall s l (d :: NodeWrap). NonEmpty (s (Expression l l d d)) -> Expression λ l d s
- typedExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> s (Type l l d d) -> Expression λ l d s
- asPattern :: forall s l (d :: NodeWrap). Name λ -> s (Pattern l l d d) -> Pattern λ l d s
- constructorPattern :: forall s l (d :: NodeWrap). s (Constructor l l d d) -> [s (Pattern l l d d)] -> Pattern λ l d s
- infixPattern :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> QualifiedName λ -> s (Pattern l l d d) -> Pattern λ l d s
- irrefutablePattern :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> Pattern λ l d s
- listPattern :: forall s l (d :: NodeWrap). [s (Pattern l l d d)] -> Pattern λ l d s
- literalPattern :: forall s l (d :: NodeWrap). s (Value l l d d) -> Pattern λ l d s
- recordPattern :: forall s l (d :: NodeWrap). QualifiedName λ -> [s (FieldPattern l l d d)] -> Pattern λ l d s
- tuplePattern :: forall s l (d :: NodeWrap). NonEmpty (s (Pattern l l d d)) -> Pattern λ l d s
- variablePattern :: forall l (d :: NodeWrap) (s :: NodeWrap). Name λ -> Pattern λ l d s
- wildcardPattern :: forall l (d :: NodeWrap) (s :: NodeWrap). Pattern λ l d s
- constructorType :: forall s l (d :: NodeWrap). s (Constructor l l d d) -> Type λ l d s
- functionConstructorType :: forall l (d :: NodeWrap) (s :: NodeWrap). Type λ l d s
- functionType :: forall s l (d :: NodeWrap). s (Type l l d d) -> s (Type l l d d) -> Type λ l d s
- listType :: forall s l (d :: NodeWrap). s (Type l l d d) -> Type λ l d s
- strictType :: forall s l (d :: NodeWrap). s (Type l l d d) -> Type λ l d s
- tupleType :: forall s l (d :: NodeWrap). NonEmpty (s (Type l l d d)) -> Type λ l d s
- typeApplication :: forall s l (d :: NodeWrap). s (Type l l d d) -> s (Type l l d d) -> Type λ l d s
- typeVariable :: forall l (d :: NodeWrap) (s :: NodeWrap). Name λ -> Type λ l d s
- constructorReference :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName λ -> Constructor λ l d s
- emptyListConstructor :: forall l (d :: NodeWrap) (s :: NodeWrap). Constructor λ l d s
- tupleConstructor :: forall l (d :: NodeWrap) (s :: NodeWrap). Int -> Constructor λ l d s
- unitConstructor :: forall l (d :: NodeWrap) (s :: NodeWrap). Constructor λ l d s
- constructor :: forall s l (d :: NodeWrap). Name λ -> [s (Type l l d d)] -> DataConstructor λ l d s
- recordConstructor :: forall s l (d :: NodeWrap). Name λ -> [s (FieldDeclaration l l d d)] -> DataConstructor λ l d s
- constructorFields :: forall s l (d :: NodeWrap). NonEmpty (Name λ) -> s (Type l l d d) -> FieldDeclaration λ l d s
- fieldBinding :: forall s l (d :: NodeWrap). QualifiedName λ -> s (Expression l l d d) -> FieldBinding λ l d s
- fieldPattern :: forall s l (d :: NodeWrap). QualifiedName λ -> s (Pattern l l d d) -> FieldPattern λ l d s
- simpleDerive :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName λ -> DerivingClause λ l d s
- typeClassInstanceLHS :: forall s l (d :: NodeWrap). QualifiedName λ -> s (Type l l d d) -> ClassInstanceLHS λ l d s
- simpleTypeLHS :: forall l (d :: NodeWrap) (s :: NodeWrap). Name λ -> [Name λ] -> TypeLHS λ l d s
- prefixLHS :: forall s l (d :: NodeWrap). s (EquationLHS l l d d) -> NonEmpty (s (Pattern l l d d)) -> EquationLHS λ l d s
- infixLHS :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> Name λ -> s (Pattern l l d d) -> EquationLHS λ l d s
- patternLHS :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> EquationLHS λ l d s
- variableLHS :: forall l (d :: NodeWrap) (s :: NodeWrap). Name λ -> EquationLHS λ l d s
- caseAlternative :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> s (EquationRHS l l d d) -> [s (Declaration l l d d)] -> CaseAlternative λ l d s
- guardedRHS :: forall s l (d :: NodeWrap). NonEmpty (s (GuardedExpression l l d d)) -> EquationRHS λ l d s
- normalRHS :: forall s l (d :: NodeWrap). s (Expression l l d d) -> EquationRHS λ l d s
- guardedExpression :: forall s l (d :: NodeWrap). [s (Statement l l d d)] -> s (Expression l l d d) -> GuardedExpression λ l d s
- classConstraint :: forall s l (d :: NodeWrap). QualifiedName λ -> s (Type l l d d) -> Context λ l d s
- constraints :: forall s l (d :: NodeWrap). [s (Context l l d d)] -> Context λ l d s
- noContext :: forall l (d :: NodeWrap) (s :: NodeWrap). Context λ l d s
- bindStatement :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> s (Expression l l d d) -> Statement λ l d s
- expressionStatement :: forall s l (d :: NodeWrap). s (Expression l l d d) -> Statement λ l d s
- letStatement :: forall s l (d :: NodeWrap). [s (Declaration l l d d)] -> Statement λ l d s
- charLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Char -> Value λ l d s
- floatingLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Rational -> Value λ l d s
- integerLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Integer -> Value λ l d s
- stringLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Text -> Value λ l d s
- name :: Text -> Name λ
- moduleName :: NonEmpty (Name λ) -> ModuleName λ
- qualifiedName :: Maybe (ModuleName λ) -> Name λ -> QualifiedName λ
- nonAssociative :: Associativity λ
- leftAssociative :: Associativity λ
- rightAssociative :: Associativity λ
- cCall :: CallingConvention λ
- cppCall :: CallingConvention λ
- dotNetCall :: CallingConvention λ
- jvmCall :: CallingConvention λ
- stdCall :: CallingConvention λ
- safeCall :: CallSafety λ
- unsafeCall :: CallSafety λ
- type family Import λ = (x :: TreeNodeSubKind) | x -> λ
- type family ImportItem λ = (x :: TreeNodeSubKind) | x -> λ
- type family ImportSpecification λ = (x :: TreeNodeSubKind) | x -> λ
- type Language = Type
- type family Members λ = (x :: Type) | x -> λ
- type family Module λ = (x :: TreeNodeSubKind) | x -> λ
- type family ModuleName λ = (x :: Type) | x -> λ
- type family Name λ = (x :: Type) | x -> λ
- type NodeWrap = Type -> Type
- type family Pattern λ = (x :: TreeNodeSubKind) | x -> λ
- type family QualifiedName λ = (x :: Type) | x -> λ
- type Rank2lyFoldable l (f :: NodeWrap) = (Foldable (Module l l f), Foldable (Declaration l l f), Foldable (Expression l l f), Foldable (Type l l f), Foldable (EquationLHS l l f), Foldable (EquationRHS l l f), Foldable (GuardedExpression l l f), Foldable (Pattern l l f), Foldable (Statement l l f), Foldable (ClassInstanceLHS l l f), Foldable (TypeLHS l l f), Foldable (Import l l f), Foldable (ImportSpecification l l f), Foldable (ImportItem l l f), Foldable (Export l l f), Foldable (Context l l f), Foldable (DataConstructor l l f), Foldable (DerivingClause l l f), Foldable (FieldDeclaration l l f), Foldable (FieldBinding l l f), Foldable (FieldPattern l l f), Foldable (CaseAlternative l l f), Foldable (Constructor l l f), Foldable (Value l l f))
- type Rank2lyFunctor l (f :: NodeWrap) = (Functor (Module l l f), Functor (Declaration l l f), Functor (Expression l l f), Functor (Type l l f), Functor (EquationLHS l l f), Functor (EquationRHS l l f), Functor (GuardedExpression l l f), Functor (Pattern l l f), Functor (Statement l l f), Functor (ClassInstanceLHS l l f), Functor (TypeLHS l l f), Functor (Import l l f), Functor (ImportSpecification l l f), Functor (ImportItem l l f), Functor (Export l l f), Functor (Context l l f), Functor (DataConstructor l l f), Functor (DerivingClause l l f), Functor (FieldDeclaration l l f), Functor (FieldBinding l l f), Functor (FieldPattern l l f), Functor (CaseAlternative l l f), Functor (Constructor l l f), Functor (Value l l f))
- type Rank2lyTraversable l (f :: NodeWrap) = (Traversable (Module l l f), Traversable (Declaration l l f), Traversable (Expression l l f), Traversable (Type l l f), Traversable (EquationLHS l l f), Traversable (EquationRHS l l f), Traversable (GuardedExpression l l f), Traversable (Pattern l l f), Traversable (Statement l l f), Traversable (ClassInstanceLHS l l f), Traversable (TypeLHS l l f), Traversable (Import l l f), Traversable (ImportSpecification l l f), Traversable (ImportItem l l f), Traversable (Export l l f), Traversable (Context l l f), Traversable (DataConstructor l l f), Traversable (DerivingClause l l f), Traversable (FieldDeclaration l l f), Traversable (FieldBinding l l f), Traversable (FieldPattern l l f), Traversable (CaseAlternative l l f), Traversable (Constructor l l f), Traversable (Value l l f))
- type family Statement λ = (x :: TreeNodeSubKind) | x -> λ
- type TreeNodeKind = Language -> TreeNodeSubKind
- type TreeNodeSubKind = Language -> NodeWrap -> NodeWrap -> Type
- type family Type λ = (x :: TreeNodeSubKind) | x -> λ
- type family TypeLHS λ = (x :: TreeNodeSubKind) | x -> λ
- type family Value λ = (x :: TreeNodeSubKind) | x -> λ
Types and classes for extension support
type family ExtensionsSupportedBy λ :: [Extension] Source #
List of extensions supported by language λ
Instances
type SupportFor (e :: Extension) l = If (Elem e (ExtensionsSupportedBy l)) () Void Source #
SupportFor e l
reduces to ()
if the language l
supports extension e
and to Void
otherwise.
type Supports (e :: Extension) l = SupportFor e l ~ () Source #
Constraint asserting the language l
supports extension e
type SupportsNo (e :: Extension) l = SupportFor e l ~ Void Source #
Constraint asserting the language l
does not support extension e
type family SupportsAllOf (es :: [Extension]) l where ... Source #
Constraint asserting the language l
supports all extensions in the list es
Equations
SupportsAllOf ('[] :: [Extension]) _1 = () | |
SupportsAllOf (e ': es) l = (Supports e l, SupportsAllOf es l) |
type family ExtendedWithAllOf (es :: [Extension]) l where ... Source #
Equations
ExtendedWithAllOf ('[] :: [Extension]) _1 = () | |
ExtendedWithAllOf (e ': es) l = (ExtendedWith '[e] l, ExtendedWithAllOf es l) |
class SupportsAllOf es λ => ExtendedWith (es :: [Extension]) λ where Source #
If the language λ
supports all the extensions es
, instance ExtendedWith es λ
provides the implementation.
Methods
build :: forall l (d :: NodeWrap) (s :: NodeWrap). Construct es λ l d s Source #
How to construct the AST nodes supporting the extensions
Instances
data family Construct (es :: [Extension]) :: TreeNodeKind Source #
Construct es
is a record of functions for constructing the AST nodes for language extensions es
.
Instances
class (Haskell λ, ExtendedWithAllOf '['MagicHash, 'ExtendedLiterals, 'ParallelListComprehensions, 'ExplicitNamespaces, 'NamedFieldPuns, 'RecordWildCards, 'RecursiveDo, 'QualifiedDo, 'LambdaCase, 'TupleSections, 'UnboxedTuples, 'UnboxedSums, 'InterruptibleFFI, 'CApiFFI, 'StrictData, 'Strict, 'BangPatterns, 'ViewPatterns, 'NPlusKPatterns, 'NamedDefaults, 'PatternSynonyms, 'ImplicitParameters, 'StandaloneDeriving, 'DerivingStrategies, 'DerivingVia, 'DefaultSignatures, 'TypeData, 'TypeAbstractions, 'FunctionalDependencies] λ, ExtendedWith '['GADTs, 'TypeData] λ, ExtendedWith '['QualifiedDo, 'RecursiveDo] λ) => ExtendedHaskell λ where Source #
The big collection of all known extensions
Minimal complete definition
multiWayIfExpression, overloadedLabel, getField, fieldProjection, safeImportDeclaration, packageQualifiedImportDeclaration, safePackageQualifiedImportDeclaration, infixTypeApplication, infixTypeLHSApplication, typeLHSApplication, simpleKindedTypeLHS, existentialConstructor, explicitlyScopedInstanceDeclaration, forallType, constrainedType, kindedType, typeWildcard, groundType, explicitlyKindedTypeVariable, implicitlyKindedTypeVariable, inferredTypeVariable, inferredExplicitlyKindedTypeVariable, typeKind, groundTypeKind, typeRoleDeclaration, kindedDataDeclaration, kindedNewtypeDeclaration, gadtDeclaration, gadtNewtypeDeclaration, gadtConstructors, recordFunctionType, multiplicityFunctionType, linearFunctionType, dataFamilyDeclaration, openTypeFamilyDeclaration, closedTypeFamilyDeclaration, injectiveOpenTypeFamilyDeclaration, injectiveClosedTypeFamilyDeclaration, dataFamilyInstance, newtypeFamilyInstance, gadtDataFamilyInstance, gadtNewtypeFamilyInstance, typeFamilyInstance, classReferenceInstanceLHS, infixTypeClassInstanceLHS, classInstanceLHSApplication, classInstanceLHSKindApplication, kindSignature, typeEquality, typeConstraint, constraintType, inferredRole, nominalRole, representationalRole, phantomRole, promotedConstructorType, promotedTupleType, promotedListType, promotedIntegerLiteral, promotedCharLiteral, promotedStringLiteral, promotedInfixTypeApplication, visibleDependentType, visibleTypeApplication, visibleKindApplication, typedPattern, constructorPatternWithTypeApplications
Associated Types
type GADTConstructor λ = (x :: TreeNodeSubKind) | x -> λ Source #
type Kind λ = (x :: TreeNodeSubKind) | x -> λ Source #
type TypeVarBinding λ = (x :: TreeNodeSubKind) | x -> λ Source #
type ModuleMember λ = (x :: Type) | x -> λ Source #
Methods
hashLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Value λ l d s -> Value λ l d s Source #
mdoExpression :: forall s l (d :: NodeWrap). s (GuardedExpression l l d d) -> Expression λ l d s Source #
parallelListComprehension :: forall s l (d :: NodeWrap). s (Expression l l d d) -> NonEmpty (s (Statement l l d d)) -> NonEmpty (s (Statement l l d d)) -> [NonEmpty (s (Statement l l d d))] -> Expression λ l d s Source #
tupleSectionExpression :: forall s l (d :: NodeWrap). NonEmpty (Maybe (s (Expression l l d d))) -> Expression λ l d s Source #
multiWayIfExpression :: forall s l (d :: NodeWrap). [s (GuardedExpression l l d d)] -> Expression λ l d s Source #
overloadedLabel :: forall l (d :: NodeWrap) (s :: NodeWrap). Text -> Expression λ l d s Source #
getField :: forall s l (d :: NodeWrap). s (Expression l l d d) -> Name λ -> Expression λ l d s Source #
fieldProjection :: forall l (d :: NodeWrap) (s :: NodeWrap). NonEmpty (Name λ) -> Expression λ l d s Source #
wildcardRecordExpression :: forall s l (d :: NodeWrap). QualifiedName λ -> [s (FieldBinding l l d d)] -> Expression λ l d s Source #
recursiveStatement :: forall s l (d :: NodeWrap). [s (Statement l l d d)] -> Statement λ l d s Source #
safeImportDeclaration :: forall s l (d :: NodeWrap). Bool -> ModuleName λ -> Maybe (ModuleName λ) -> Maybe (s (ImportSpecification l l d d)) -> Import λ l d s Source #
packageQualifiedImportDeclaration :: forall s l (d :: NodeWrap). Bool -> Text -> ModuleName λ -> Maybe (ModuleName λ) -> Maybe (s (ImportSpecification l l d d)) -> Import λ l d s Source #
safePackageQualifiedImportDeclaration :: forall s l (d :: NodeWrap). Bool -> Text -> ModuleName λ -> Maybe (ModuleName λ) -> Maybe (s (ImportSpecification l l d d)) -> Import λ l d s Source #
infixTypeApplication :: forall s l (d :: NodeWrap). s (Type l l d d) -> QualifiedName λ -> s (Type l l d d) -> Type λ l d s Source #
infixTypeLHSApplication :: forall l (d :: NodeWrap) (s :: NodeWrap). TypeVarBinding λ l d s -> Name λ -> TypeVarBinding λ l d s -> TypeLHS λ l d s Source #
typeLHSApplication :: forall s l (d :: NodeWrap). s (TypeLHS l l d d) -> TypeVarBinding λ l d s -> TypeLHS λ l d s Source #
simpleKindedTypeLHS :: forall l (d :: NodeWrap) (s :: NodeWrap). Name λ -> [TypeVarBinding λ l d s] -> TypeLHS λ l d s Source #
existentialConstructor :: forall l (d :: NodeWrap) s. [TypeVarBinding λ l d s] -> s (Context l l d d) -> s (DataConstructor l l d d) -> DataConstructor λ l d s Source #
explicitlyScopedInstanceDeclaration :: forall l (d :: NodeWrap) s. [TypeVarBinding λ l d s] -> s (Context l l d d) -> s (ClassInstanceLHS l l d d) -> [s (Declaration l l d d)] -> Declaration λ l d s Source #
forallType :: forall l (d :: NodeWrap) s. [TypeVarBinding λ l d s] -> s (Type l l d d) -> Type λ l d s Source #
constrainedType :: forall s l (d :: NodeWrap). s (Context l l d d) -> s (Type l l d d) -> Type λ l d s Source #
kindedType :: forall s l (d :: NodeWrap). s (Type l l d d) -> s (Kind l l d d) -> Type λ l d s Source #
typeWildcard :: forall l (d :: NodeWrap) (s :: NodeWrap). Type λ l d s Source #
groundType :: forall l (d :: NodeWrap) (s :: NodeWrap). Type λ l d s Source #
explicitlyKindedTypeVariable :: forall s l (d :: NodeWrap). Name λ -> s (Kind l l d d) -> TypeVarBinding λ l d s Source #
implicitlyKindedTypeVariable :: forall l (d :: NodeWrap) (s :: NodeWrap). Name λ -> TypeVarBinding λ l d s Source #
inferredTypeVariable :: forall l (d :: NodeWrap) (s :: NodeWrap). Name λ -> TypeVarBinding λ l d s Source #
inferredExplicitlyKindedTypeVariable :: forall s l (d :: NodeWrap). Name λ -> s (Kind l l d d) -> TypeVarBinding λ l d s Source #
typeKind :: forall s l (d :: NodeWrap). s (Type l l d d) -> Kind λ l d s Source #
groundTypeKind :: forall l (d :: NodeWrap) (s :: NodeWrap). Type λ l d s Source #
typeRoleDeclaration :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName λ -> [TypeRole λ] -> Declaration λ l d s Source #
kindedDataDeclaration :: forall s l (d :: NodeWrap). s (Context l l d d) -> s (TypeLHS l l d d) -> s (Kind l l d d) -> [s (DataConstructor l l d d)] -> [s (DerivingClause l l d d)] -> Declaration λ l d s Source #
kindedNewtypeDeclaration :: forall s l (d :: NodeWrap). s (Context l l d d) -> s (TypeLHS l l d d) -> s (Kind l l d d) -> s (DataConstructor l l d d) -> [s (DerivingClause l l d d)] -> Declaration λ l d s Source #
gadtDeclaration :: forall s l (d :: NodeWrap). s (TypeLHS l l d d) -> Maybe (s (Kind l l d d)) -> [s (GADTConstructor l l d d)] -> [s (DerivingClause l l d d)] -> Declaration λ l d s Source #
gadtNewtypeDeclaration :: forall s l (d :: NodeWrap). s (TypeLHS l l d d) -> Maybe (s (Kind l l d d)) -> s (GADTConstructor l l d d) -> [s (DerivingClause l l d d)] -> Declaration λ l d s Source #
gadtConstructors :: forall l (d :: NodeWrap) s. NonEmpty (Name λ) -> [TypeVarBinding λ l d s] -> s (Context l l d d) -> s (Type l l d d) -> GADTConstructor λ l d s Source #
recordFunctionType :: forall s l (d :: NodeWrap). [s (FieldDeclaration l l d d)] -> s (Type l l d d) -> Type λ l d s Source #
multiplicityFunctionType :: forall s l (d :: NodeWrap). s (Type l l d d) -> s (Type l l d d) -> s (Type l l d d) -> Type λ l d s Source #
linearFunctionType :: forall s l (d :: NodeWrap). s (Type l l d d) -> s (Type l l d d) -> Type λ l d s Source #
punnedFieldBinding :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName λ -> FieldBinding λ l d s Source #
punnedFieldPattern :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName λ -> FieldPattern λ l d s Source #
dataFamilyDeclaration :: forall s l (d :: NodeWrap). s (TypeLHS l l d d) -> Maybe (s (Kind l l d d)) -> Declaration λ l d s Source #
openTypeFamilyDeclaration :: forall s l (d :: NodeWrap). s (TypeLHS l l d d) -> Maybe (s (Kind l l d d)) -> Declaration λ l d s Source #
closedTypeFamilyDeclaration :: forall s l (d :: NodeWrap). s (TypeLHS l l d d) -> Maybe (s (Kind l l d d)) -> [s (Declaration l l d d)] -> Declaration λ l d s Source #
injectiveOpenTypeFamilyDeclaration :: forall s l (d :: NodeWrap). s (TypeLHS l l d d) -> TypeVarBinding λ l d s -> Maybe (Name λ, NonEmpty (Name λ)) -> Declaration λ l d s Source #
injectiveClosedTypeFamilyDeclaration :: forall s l (d :: NodeWrap). s (TypeLHS l l d d) -> TypeVarBinding λ l d s -> Maybe (Name λ, NonEmpty (Name λ)) -> [s (Declaration l l d d)] -> Declaration λ l d s Source #
dataFamilyInstance :: forall l (d :: NodeWrap) s. [TypeVarBinding λ l d s] -> s (Context l l d d) -> s (ClassInstanceLHS l l d d) -> Maybe (s (Kind l l d d)) -> [s (DataConstructor l l d d)] -> [s (DerivingClause l l d d)] -> Declaration λ l d s Source #
newtypeFamilyInstance :: forall l (d :: NodeWrap) s. [TypeVarBinding λ l d s] -> s (Context l l d d) -> s (ClassInstanceLHS l l d d) -> Maybe (s (Kind l l d d)) -> s (DataConstructor l l d d) -> [s (DerivingClause l l d d)] -> Declaration λ l d s Source #
gadtDataFamilyInstance :: forall l (d :: NodeWrap) s. [TypeVarBinding λ l d s] -> s (ClassInstanceLHS l l d d) -> Maybe (s (Kind l l d d)) -> [s (GADTConstructor l l d d)] -> [s (DerivingClause l l d d)] -> Declaration λ l d s Source #
gadtNewtypeFamilyInstance :: forall l (d :: NodeWrap) s. [TypeVarBinding λ l d s] -> s (ClassInstanceLHS l l d d) -> Maybe (s (Kind l l d d)) -> s (GADTConstructor l l d d) -> [s (DerivingClause l l d d)] -> Declaration λ l d s Source #
typeFamilyInstance :: forall l (d :: NodeWrap) s. [TypeVarBinding λ l d s] -> s (ClassInstanceLHS l l d d) -> s (Type l l d d) -> Declaration λ l d s Source #
classReferenceInstanceLHS :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName λ -> ClassInstanceLHS λ l d s Source #
infixTypeClassInstanceLHS :: forall s l (d :: NodeWrap). s (Type l l d d) -> QualifiedName λ -> s (Type l l d d) -> ClassInstanceLHS λ l d s Source #
classInstanceLHSApplication :: forall s l (d :: NodeWrap). s (ClassInstanceLHS l l d d) -> s (Type l l d d) -> ClassInstanceLHS λ l d s Source #
classInstanceLHSKindApplication :: forall s l (d :: NodeWrap). s (ClassInstanceLHS l l d d) -> s (Kind l l d d) -> ClassInstanceLHS λ l d s Source #
kindSignature :: forall s l (d :: NodeWrap). Name λ -> s (Kind l l d d) -> Declaration λ l d s Source #
typeEquality :: forall s l (d :: NodeWrap). s (Type l l d d) -> s (Type l l d d) -> Context λ l d s Source #
typeConstraint :: forall s l (d :: NodeWrap). s (Type l l d d) -> Context λ l d s Source #
constraintType :: forall s l (d :: NodeWrap). s (Context l l d d) -> Type λ l d s Source #
inferredRole :: TypeRole λ Source #
nominalRole :: TypeRole λ Source #
representationalRole :: TypeRole λ Source #
phantomRole :: TypeRole λ Source #
promotedConstructorType :: forall s l (d :: NodeWrap). s (Constructor l l d d) -> Type λ l d s Source #
promotedTupleType :: forall s l (d :: NodeWrap). [s (Type l l d d)] -> Type λ l d s Source #
promotedListType :: forall s l (d :: NodeWrap). [s (Type l l d d)] -> Type λ l d s Source #
promotedIntegerLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Integer -> Type λ l d s Source #
promotedCharLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Char -> Type λ l d s Source #
promotedStringLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Text -> Type λ l d s Source #
promotedInfixTypeApplication :: forall s l (d :: NodeWrap). s (Type l l d d) -> QualifiedName λ -> s (Type l l d d) -> Type λ l d s Source #
visibleDependentType :: forall l (d :: NodeWrap) s. [TypeVarBinding λ l d s] -> s (Type l l d d) -> Type λ l d s Source #
visibleTypeApplication :: forall s l (d :: NodeWrap). s (Expression l l d d) -> s (Type l l d d) -> Expression λ l d s Source #
visibleKindApplication :: forall s l (d :: NodeWrap). s (Type l l d d) -> s (Kind l l d d) -> Type λ l d s Source #
typedPattern :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> s (Type l l d d) -> Pattern λ l d s Source #
constructorPatternWithTypeApplications :: forall s l (d :: NodeWrap). s (Constructor l l d d) -> [s (Type l l d d)] -> [s (Pattern l l d d)] -> Pattern λ l d s Source #
wildcardRecordPattern :: forall s l (d :: NodeWrap). QualifiedName λ -> [s (FieldPattern l l d d)] -> Pattern λ l d s Source #
Instances
Constraint synonyms
type UniversallyApplicable t l (d :: NodeWrap) = (At t (GADTConstructor l l d d), At t (Kind l l d d), At t (TypeVarBinding l l d d), At t (DerivingStrategy l l d d), At t (FunctionalDependency l l d d), At t (PatternLHS l l d d), At t (PatternEquationLHS l l d d), At t (PatternEquationClause l l d d), UniversallyApplicable t l d) Source #
Constraint UniversallyApplicable t l d
means that the transformation t
can be applied to any AST node of
language l
with subtrees wrapped in d
.
type DeeplyFunctor t l = (Functor t (GADTConstructor l l), Functor t (Kind l l), Functor t (TypeVarBinding l l), Functor t (DerivingStrategy l l), Functor t (FunctionalDependency l l), Functor t (PatternLHS l l), Functor t (PatternEquationLHS l l), Functor t (PatternEquationClause l l), DeeplyFunctor t l) Source #
Named collection of constraints DeeplyFunctor t l
means that every AST node of language l
is a
Functor
for transformation t
.
type DeeplyFoldable t l = (Foldable t (GADTConstructor l l), Foldable t (Kind l l), Foldable t (TypeVarBinding l l), Foldable t (DerivingStrategy l l), Foldable t (FunctionalDependency l l), Foldable t (LambdaCasesAlternative l l), Foldable t (PatternLHS l l), Foldable t (PatternEquationLHS l l), Foldable t (PatternEquationClause l l), DeeplyFoldable t l) Source #
Named collection of constraints DeeplyFoldable t l
means that every AST node of language l
is
Foldable
for transformation t
.
type DeeplyTraversable t l = (Traversable t (GADTConstructor l l), Traversable t (Kind l l), Traversable t (TypeVarBinding l l), Traversable t (DerivingStrategy l l), Traversable t (FunctionalDependency l l), Traversable t (PatternLHS l l), Traversable t (PatternEquationLHS l l), Traversable t (PatternEquationClause l l), DeeplyTraversable t l) Source #
Named collection of constraints DeeplyTraversable t l
means that every AST node of language l
is
Traversable
for transformation t
.
AST node types for language extensions
type family DerivingStrategy λ :: TreeNodeSubKind Source #
Instances
type DerivingStrategy Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type family FunctionalDependency λ :: TreeNodeSubKind Source #
Instances
type FunctionalDependency Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type family LambdaCasesAlternative λ :: TreeNodeSubKind Source #
Instances
type family PatternLHS λ :: TreeNodeSubKind Source #
Instances
type PatternLHS Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type family PatternEquationClause λ :: TreeNodeSubKind Source #
Instances
type family PatternEquationLHS λ :: TreeNodeSubKind Source #
Instances
type PatternEquationLHS Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type family Associativity λ = (x :: Type) | x -> λ Source #
Instances
type Associativity Language Source # | |
Defined in Language.Haskell.AST | |
type Associativity Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type family CallSafety λ = (x :: Type) | x -> λ Source #
Instances
type CallSafety Language Source # | |
Defined in Language.Haskell.AST | |
type CallSafety Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type family CallingConvention λ = (x :: Type) | x -> λ Source #
Instances
type CallingConvention Language Source # | |
Defined in Language.Haskell.AST | |
type CallingConvention Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type family CaseAlternative λ = (x :: TreeNodeSubKind) | x -> λ Source #
Instances
type CaseAlternative Language Source # | |
Defined in Language.Haskell.AST | |
type CaseAlternative Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type family ClassInstanceLHS λ = (x :: TreeNodeSubKind) | x -> λ Source #
Instances
type ClassInstanceLHS Language Source # | |
Defined in Language.Haskell.AST | |
type ClassInstanceLHS Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type family Constructor λ = (x :: TreeNodeSubKind) | x -> λ Source #
Instances
type Constructor Language Source # | |
Defined in Language.Haskell.AST | |
type Constructor Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type family Context λ = (x :: TreeNodeSubKind) | x -> λ Source #
type family DataConstructor λ = (x :: TreeNodeSubKind) | x -> λ Source #
Instances
type DataConstructor Language Source # | |
Defined in Language.Haskell.AST | |
type DataConstructor Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type family Declaration λ = (x :: TreeNodeSubKind) | x -> λ Source #
Instances
type Declaration Language Source # | |
Defined in Language.Haskell.AST | |
type Declaration Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type family DerivingClause λ = (x :: TreeNodeSubKind) | x -> λ Source #
Instances
type DerivingClause Language Source # | |
Defined in Language.Haskell.AST | |
type DerivingClause Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type family EquationLHS λ = (x :: TreeNodeSubKind) | x -> λ Source #
Instances
type EquationLHS Language Source # | |
Defined in Language.Haskell.AST | |
type EquationLHS Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type family EquationRHS λ = (x :: TreeNodeSubKind) | x -> λ Source #
Instances
type EquationRHS Language Source # | |
Defined in Language.Haskell.AST | |
type EquationRHS Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type family Export λ = (x :: TreeNodeSubKind) | x -> λ Source #
type family Expression λ = (x :: TreeNodeSubKind) | x -> λ Source #
Instances
type Expression Language Source # | |
Defined in Language.Haskell.AST | |
type Expression Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type family FieldBinding λ = (x :: TreeNodeSubKind) | x -> λ Source #
Instances
type FieldBinding Language Source # | |
Defined in Language.Haskell.AST | |
type FieldBinding Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type family FieldDeclaration λ = (x :: TreeNodeSubKind) | x -> λ Source #
Instances
type FieldDeclaration Language Source # | |
Defined in Language.Haskell.AST | |
type FieldDeclaration Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type family FieldPattern λ = (x :: TreeNodeSubKind) | x -> λ Source #
Instances
type FieldPattern Language Source # | |
Defined in Language.Haskell.AST | |
type FieldPattern Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type family GuardedExpression λ = (x :: TreeNodeSubKind) | x -> λ Source #
Instances
type GuardedExpression Language Source # | |
Defined in Language.Haskell.AST | |
type GuardedExpression Language Source # | |
Defined in Language.Haskell.Extensions.AST |
class Haskell λ where Source #
An abstract finally-tagless specification of a Haskell 2010 language
Associated Types
type Module λ = (x :: TreeNodeSubKind) | x -> λ Source #
type Declaration λ = (x :: TreeNodeSubKind) | x -> λ Source #
type Expression λ = (x :: TreeNodeSubKind) | x -> λ Source #
type Type λ = (x :: TreeNodeSubKind) | x -> λ Source #
type EquationLHS λ = (x :: TreeNodeSubKind) | x -> λ Source #
type EquationRHS λ = (x :: TreeNodeSubKind) | x -> λ Source #
type GuardedExpression λ = (x :: TreeNodeSubKind) | x -> λ Source #
type Pattern λ = (x :: TreeNodeSubKind) | x -> λ Source #
type Statement λ = (x :: TreeNodeSubKind) | x -> λ Source #
type ClassInstanceLHS λ = (x :: TreeNodeSubKind) | x -> λ Source #
type TypeLHS λ = (x :: TreeNodeSubKind) | x -> λ Source #
type Import λ = (x :: TreeNodeSubKind) | x -> λ Source #
type ImportSpecification λ = (x :: TreeNodeSubKind) | x -> λ Source #
type ImportItem λ = (x :: TreeNodeSubKind) | x -> λ Source #
type Export λ = (x :: TreeNodeSubKind) | x -> λ Source #
type Context λ = (x :: TreeNodeSubKind) | x -> λ Source #
type DataConstructor λ = (x :: TreeNodeSubKind) | x -> λ Source #
type DerivingClause λ = (x :: TreeNodeSubKind) | x -> λ Source #
type FieldDeclaration λ = (x :: TreeNodeSubKind) | x -> λ Source #
type FieldBinding λ = (x :: TreeNodeSubKind) | x -> λ Source #
type FieldPattern λ = (x :: TreeNodeSubKind) | x -> λ Source #
type CaseAlternative λ = (x :: TreeNodeSubKind) | x -> λ Source #
type Constructor λ = (x :: TreeNodeSubKind) | x -> λ Source #
type Value λ = (x :: TreeNodeSubKind) | x -> λ Source #
type CallingConvention λ = (x :: Type) | x -> λ Source #
type CallSafety λ = (x :: Type) | x -> λ Source #
type Associativity λ = (x :: Type) | x -> λ Source #
type Members λ = (x :: Type) | x -> λ Source #
type Name λ = (x :: Type) | x -> λ Source #
type ModuleName λ = (x :: Type) | x -> λ Source #
type QualifiedName λ = (x :: Type) | x -> λ Source #
Methods
anonymousModule :: forall s l (d :: NodeWrap). [s (Import l l d d)] -> [s (Declaration l l d d)] -> Module λ l d s Source #
namedModule :: forall s l (d :: NodeWrap). ModuleName λ -> Maybe [s (Export l l d d)] -> [s (Import l l d d)] -> [s (Declaration l l d d)] -> Module λ l d s Source #
withLanguagePragma :: forall s l (d :: NodeWrap). [ExtensionSwitch] -> s (Module l l d d) -> Module λ l d s Source #
exportClassOrType :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName λ -> Maybe (Members λ) -> Export λ l d s Source #
exportVar :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName λ -> Export λ l d s Source #
reExportModule :: forall l (d :: NodeWrap) (s :: NodeWrap). ModuleName λ -> Export λ l d s Source #
importDeclaration :: forall s l (d :: NodeWrap). Bool -> ModuleName λ -> Maybe (ModuleName λ) -> Maybe (s (ImportSpecification l l d d)) -> Import λ l d s Source #
excludedImports :: forall s l (d :: NodeWrap). [s (ImportItem l l d d)] -> ImportSpecification λ l d s Source #
includedImports :: forall s l (d :: NodeWrap). [s (ImportItem l l d d)] -> ImportSpecification λ l d s Source #
importClassOrType :: forall l (d :: NodeWrap) (s :: NodeWrap). Name λ -> Maybe (Members λ) -> ImportItem λ l d s Source #
importVar :: forall l (d :: NodeWrap) (s :: NodeWrap). Name λ -> ImportItem λ l d s Source #
allMembers :: Members λ Source #
memberList :: [Name λ] -> Members λ Source #
classDeclaration :: forall s l (d :: NodeWrap). s (Context l l d d) -> s (TypeLHS l l d d) -> [s (Declaration l l d d)] -> Declaration λ l d s Source #
dataDeclaration :: forall s l (d :: NodeWrap). s (Context l l d d) -> s (TypeLHS l l d d) -> [s (DataConstructor l l d d)] -> [s (DerivingClause l l d d)] -> Declaration λ l d s Source #
defaultDeclaration :: forall s l (d :: NodeWrap). [s (Type l l d d)] -> Declaration λ l d s Source #
equationDeclaration :: forall s l (d :: NodeWrap). s (EquationLHS l l d d) -> s (EquationRHS l l d d) -> [s (Declaration l l d d)] -> Declaration λ l d s Source #
fixityDeclaration :: forall l (d :: NodeWrap) (s :: NodeWrap). Associativity λ -> Maybe Int -> NonEmpty (Name λ) -> Declaration λ l d s Source #
foreignExport :: forall s l (d :: NodeWrap). CallingConvention λ -> Maybe Text -> Name λ -> s (Type l l d d) -> Declaration λ l d s Source #
foreignImport :: forall s l (d :: NodeWrap). CallingConvention λ -> Maybe (CallSafety λ) -> Maybe Text -> Name λ -> s (Type l l d d) -> Declaration λ l d s Source #
instanceDeclaration :: forall s l (d :: NodeWrap). s (Context l l d d) -> s (ClassInstanceLHS l l d d) -> [s (Declaration l l d d)] -> Declaration λ l d s Source #
newtypeDeclaration :: forall s l (d :: NodeWrap). s (Context l l d d) -> s (TypeLHS l l d d) -> s (DataConstructor l l d d) -> [s (DerivingClause l l d d)] -> Declaration λ l d s Source #
typeSynonymDeclaration :: forall s l (d :: NodeWrap). s (TypeLHS l l d d) -> s (Type l l d d) -> Declaration λ l d s Source #
typeSignature :: forall s l (d :: NodeWrap). NonEmpty (Name λ) -> s (Context l l d d) -> s (Type l l d d) -> Declaration λ l d s Source #
applyExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> s (Expression l l d d) -> Expression λ l d s Source #
conditionalExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> s (Expression l l d d) -> s (Expression l l d d) -> Expression λ l d s Source #
constructorExpression :: forall s l (d :: NodeWrap). s (Constructor l l d d) -> Expression λ l d s Source #
caseExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> [s (CaseAlternative l l d d)] -> Expression λ l d s Source #
doExpression :: forall s l (d :: NodeWrap). s (GuardedExpression l l d d) -> Expression λ l d s Source #
infixExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> s (Expression l l d d) -> s (Expression l l d d) -> Expression λ l d s Source #
leftSectionExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> QualifiedName λ -> Expression λ l d s Source #
lambdaExpression :: forall s l (d :: NodeWrap). [s (Pattern l l d d)] -> s (Expression l l d d) -> Expression λ l d s Source #
letExpression :: forall s l (d :: NodeWrap). [s (Declaration l l d d)] -> s (Expression l l d d) -> Expression λ l d s Source #
listComprehension :: forall s l (d :: NodeWrap). s (Expression l l d d) -> NonEmpty (s (Statement l l d d)) -> Expression λ l d s Source #
listExpression :: forall s l (d :: NodeWrap). [s (Expression l l d d)] -> Expression λ l d s Source #
literalExpression :: forall s l (d :: NodeWrap). s (Value l l d d) -> Expression λ l d s Source #
negate :: forall l (d :: NodeWrap) (s :: NodeWrap). Expression λ l d s Source #
recordExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> [s (FieldBinding l l d d)] -> Expression λ l d s Source #
referenceExpression :: forall l (d :: NodeWrap). QualifiedName λ -> Expression λ l d d Source #
rightSectionExpression :: forall s l (d :: NodeWrap). QualifiedName λ -> s (Expression l l d d) -> Expression λ l d s Source #
sequenceExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> Maybe (s (Expression l l d d)) -> Maybe (s (Expression l l d d)) -> Expression λ l d s Source #
tupleExpression :: forall s l (d :: NodeWrap). NonEmpty (s (Expression l l d d)) -> Expression λ l d s Source #
typedExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> s (Type l l d d) -> Expression λ l d s Source #
asPattern :: forall s l (d :: NodeWrap). Name λ -> s (Pattern l l d d) -> Pattern λ l d s Source #
constructorPattern :: forall s l (d :: NodeWrap). s (Constructor l l d d) -> [s (Pattern l l d d)] -> Pattern λ l d s Source #
infixPattern :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> QualifiedName λ -> s (Pattern l l d d) -> Pattern λ l d s Source #
irrefutablePattern :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> Pattern λ l d s Source #
listPattern :: forall s l (d :: NodeWrap). [s (Pattern l l d d)] -> Pattern λ l d s Source #
literalPattern :: forall s l (d :: NodeWrap). s (Value l l d d) -> Pattern λ l d s Source #
recordPattern :: forall s l (d :: NodeWrap). QualifiedName λ -> [s (FieldPattern l l d d)] -> Pattern λ l d s Source #
tuplePattern :: forall s l (d :: NodeWrap). NonEmpty (s (Pattern l l d d)) -> Pattern λ l d s Source #
variablePattern :: forall l (d :: NodeWrap) (s :: NodeWrap). Name λ -> Pattern λ l d s Source #
wildcardPattern :: forall l (d :: NodeWrap) (s :: NodeWrap). Pattern λ l d s Source #
constructorType :: forall s l (d :: NodeWrap). s (Constructor l l d d) -> Type λ l d s Source #
functionConstructorType :: forall l (d :: NodeWrap) (s :: NodeWrap). Type λ l d s Source #
functionType :: forall s l (d :: NodeWrap). s (Type l l d d) -> s (Type l l d d) -> Type λ l d s Source #
listType :: forall s l (d :: NodeWrap). s (Type l l d d) -> Type λ l d s Source #
strictType :: forall s l (d :: NodeWrap). s (Type l l d d) -> Type λ l d s Source #
tupleType :: forall s l (d :: NodeWrap). NonEmpty (s (Type l l d d)) -> Type λ l d s Source #
typeApplication :: forall s l (d :: NodeWrap). s (Type l l d d) -> s (Type l l d d) -> Type λ l d s Source #
typeVariable :: forall l (d :: NodeWrap) (s :: NodeWrap). Name λ -> Type λ l d s Source #
constructorReference :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName λ -> Constructor λ l d s Source #
emptyListConstructor :: forall l (d :: NodeWrap) (s :: NodeWrap). Constructor λ l d s Source #
tupleConstructor :: forall l (d :: NodeWrap) (s :: NodeWrap). Int -> Constructor λ l d s Source #
unitConstructor :: forall l (d :: NodeWrap) (s :: NodeWrap). Constructor λ l d s Source #
constructor :: forall s l (d :: NodeWrap). Name λ -> [s (Type l l d d)] -> DataConstructor λ l d s Source #
recordConstructor :: forall s l (d :: NodeWrap). Name λ -> [s (FieldDeclaration l l d d)] -> DataConstructor λ l d s Source #
constructorFields :: forall s l (d :: NodeWrap). NonEmpty (Name λ) -> s (Type l l d d) -> FieldDeclaration λ l d s Source #
fieldBinding :: forall s l (d :: NodeWrap). QualifiedName λ -> s (Expression l l d d) -> FieldBinding λ l d s Source #
fieldPattern :: forall s l (d :: NodeWrap). QualifiedName λ -> s (Pattern l l d d) -> FieldPattern λ l d s Source #
simpleDerive :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName λ -> DerivingClause λ l d s Source #
typeClassInstanceLHS :: forall s l (d :: NodeWrap). QualifiedName λ -> s (Type l l d d) -> ClassInstanceLHS λ l d s Source #
simpleTypeLHS :: forall l (d :: NodeWrap) (s :: NodeWrap). Name λ -> [Name λ] -> TypeLHS λ l d s Source #
prefixLHS :: forall s l (d :: NodeWrap). s (EquationLHS l l d d) -> NonEmpty (s (Pattern l l d d)) -> EquationLHS λ l d s Source #
infixLHS :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> Name λ -> s (Pattern l l d d) -> EquationLHS λ l d s Source #
patternLHS :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> EquationLHS λ l d s Source #
variableLHS :: forall l (d :: NodeWrap) (s :: NodeWrap). Name λ -> EquationLHS λ l d s Source #
caseAlternative :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> s (EquationRHS l l d d) -> [s (Declaration l l d d)] -> CaseAlternative λ l d s Source #
guardedRHS :: forall s l (d :: NodeWrap). NonEmpty (s (GuardedExpression l l d d)) -> EquationRHS λ l d s Source #
normalRHS :: forall s l (d :: NodeWrap). s (Expression l l d d) -> EquationRHS λ l d s Source #
guardedExpression :: forall s l (d :: NodeWrap). [s (Statement l l d d)] -> s (Expression l l d d) -> GuardedExpression λ l d s Source #
classConstraint :: forall s l (d :: NodeWrap). QualifiedName λ -> s (Type l l d d) -> Context λ l d s Source #
constraints :: forall s l (d :: NodeWrap). [s (Context l l d d)] -> Context λ l d s Source #
noContext :: forall l (d :: NodeWrap) (s :: NodeWrap). Context λ l d s Source #
bindStatement :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> s (Expression l l d d) -> Statement λ l d s Source #
expressionStatement :: forall s l (d :: NodeWrap). s (Expression l l d d) -> Statement λ l d s Source #
letStatement :: forall s l (d :: NodeWrap). [s (Declaration l l d d)] -> Statement λ l d s Source #
charLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Char -> Value λ l d s Source #
floatingLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Rational -> Value λ l d s Source #
integerLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Integer -> Value λ l d s Source #
stringLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Text -> Value λ l d s Source #
name :: Text -> Name λ Source #
moduleName :: NonEmpty (Name λ) -> ModuleName λ Source #
qualifiedName :: Maybe (ModuleName λ) -> Name λ -> QualifiedName λ Source #
nonAssociative :: Associativity λ Source #
leftAssociative :: Associativity λ Source #
rightAssociative :: Associativity λ Source #
cCall :: CallingConvention λ Source #
cppCall :: CallingConvention λ Source #
dotNetCall :: CallingConvention λ Source #
jvmCall :: CallingConvention λ Source #
stdCall :: CallingConvention λ Source #
safeCall :: CallSafety λ Source #
unsafeCall :: CallSafety λ Source #
Instances
Haskell Language Source # | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Defined in Language.Haskell.AST Associated Types
Methods anonymousModule :: forall s l (d :: NodeWrap). [s (Import l l d d)] -> [s (Declaration l l d d)] -> Module Language l d s Source # namedModule :: forall s l (d :: NodeWrap). ModuleName Language -> Maybe [s (Export l l d d)] -> [s (Import l l d d)] -> [s (Declaration l l d d)] -> Module Language l d s Source # withLanguagePragma :: forall s l (d :: NodeWrap). [ExtensionSwitch] -> s (Module l l d d) -> Module Language l d s Source # exportClassOrType :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName Language -> Maybe (Members Language) -> Export Language l d s Source # exportVar :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName Language -> Export Language l d s Source # reExportModule :: forall l (d :: NodeWrap) (s :: NodeWrap). ModuleName Language -> Export Language l d s Source # importDeclaration :: forall s l (d :: NodeWrap). Bool -> ModuleName Language -> Maybe (ModuleName Language) -> Maybe (s (ImportSpecification l l d d)) -> Import Language l d s Source # excludedImports :: forall s l (d :: NodeWrap). [s (ImportItem l l d d)] -> ImportSpecification Language l d s Source # includedImports :: forall s l (d :: NodeWrap). [s (ImportItem l l d d)] -> ImportSpecification Language l d s Source # importClassOrType :: forall l (d :: NodeWrap) (s :: NodeWrap). Name Language -> Maybe (Members Language) -> ImportItem Language l d s Source # importVar :: forall l (d :: NodeWrap) (s :: NodeWrap). Name Language -> ImportItem Language l d s Source # allMembers :: Members Language Source # memberList :: [Name Language] -> Members Language Source # classDeclaration :: forall s l (d :: NodeWrap). s (Context l l d d) -> s (TypeLHS l l d d) -> [s (Declaration l l d d)] -> Declaration Language l d s Source # dataDeclaration :: forall s l (d :: NodeWrap). s (Context l l d d) -> s (TypeLHS l l d d) -> [s (DataConstructor l l d d)] -> [s (DerivingClause l l d d)] -> Declaration Language l d s Source # defaultDeclaration :: forall s l (d :: NodeWrap). [s (Type l l d d)] -> Declaration Language l d s Source # equationDeclaration :: forall s l (d :: NodeWrap). s (EquationLHS l l d d) -> s (EquationRHS l l d d) -> [s (Declaration l l d d)] -> Declaration Language l d s Source # fixityDeclaration :: forall l (d :: NodeWrap) (s :: NodeWrap). Associativity Language -> Maybe Int -> NonEmpty (Name Language) -> Declaration Language l d s Source # foreignExport :: forall s l (d :: NodeWrap). CallingConvention Language -> Maybe Text -> Name Language -> s (Type l l d d) -> Declaration Language l d s Source # foreignImport :: forall s l (d :: NodeWrap). CallingConvention Language -> Maybe (CallSafety Language) -> Maybe Text -> Name Language -> s (Type l l d d) -> Declaration Language l d s Source # instanceDeclaration :: forall s l (d :: NodeWrap). s (Context l l d d) -> s (ClassInstanceLHS l l d d) -> [s (Declaration l l d d)] -> Declaration Language l d s Source # newtypeDeclaration :: forall s l (d :: NodeWrap). s (Context l l d d) -> s (TypeLHS l l d d) -> s (DataConstructor l l d d) -> [s (DerivingClause l l d d)] -> Declaration Language l d s Source # typeSynonymDeclaration :: forall s l (d :: NodeWrap). s (TypeLHS l l d d) -> s (Type l l d d) -> Declaration Language l d s Source # typeSignature :: forall s l (d :: NodeWrap). NonEmpty (Name Language) -> s (Context l l d d) -> s (Type l l d d) -> Declaration Language l d s Source # applyExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> s (Expression l l d d) -> Expression Language l d s Source # conditionalExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> s (Expression l l d d) -> s (Expression l l d d) -> Expression Language l d s Source # constructorExpression :: forall s l (d :: NodeWrap). s (Constructor l l d d) -> Expression Language l d s Source # caseExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> [s (CaseAlternative l l d d)] -> Expression Language l d s Source # doExpression :: forall s l (d :: NodeWrap). s (GuardedExpression l l d d) -> Expression Language l d s Source # infixExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> s (Expression l l d d) -> s (Expression l l d d) -> Expression Language l d s Source # leftSectionExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> QualifiedName Language -> Expression Language l d s Source # lambdaExpression :: forall s l (d :: NodeWrap). [s (Pattern l l d d)] -> s (Expression l l d d) -> Expression Language l d s Source # letExpression :: forall s l (d :: NodeWrap). [s (Declaration l l d d)] -> s (Expression l l d d) -> Expression Language l d s Source # listComprehension :: forall s l (d :: NodeWrap). s (Expression l l d d) -> NonEmpty (s (Statement l l d d)) -> Expression Language l d s Source # listExpression :: forall s l (d :: NodeWrap). [s (Expression l l d d)] -> Expression Language l d s Source # literalExpression :: forall s l (d :: NodeWrap). s (Value l l d d) -> Expression Language l d s Source # negate :: forall l (d :: NodeWrap) (s :: NodeWrap). Expression Language l d s Source # recordExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> [s (FieldBinding l l d d)] -> Expression Language l d s Source # referenceExpression :: forall l (d :: NodeWrap). QualifiedName Language -> Expression Language l d d Source # rightSectionExpression :: forall s l (d :: NodeWrap). QualifiedName Language -> s (Expression l l d d) -> Expression Language l d s Source # sequenceExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> Maybe (s (Expression l l d d)) -> Maybe (s (Expression l l d d)) -> Expression Language l d s Source # tupleExpression :: forall s l (d :: NodeWrap). NonEmpty (s (Expression l l d d)) -> Expression Language l d s Source # typedExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> s (Type l l d d) -> Expression Language l d s Source # asPattern :: forall s l (d :: NodeWrap). Name Language -> s (Pattern l l d d) -> Pattern Language l d s Source # constructorPattern :: forall s l (d :: NodeWrap). s (Constructor l l d d) -> [s (Pattern l l d d)] -> Pattern Language l d s Source # infixPattern :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> QualifiedName Language -> s (Pattern l l d d) -> Pattern Language l d s Source # irrefutablePattern :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> Pattern Language l d s Source # listPattern :: forall s l (d :: NodeWrap). [s (Pattern l l d d)] -> Pattern Language l d s Source # literalPattern :: forall s l (d :: NodeWrap). s (Value l l d d) -> Pattern Language l d s Source # recordPattern :: forall s l (d :: NodeWrap). QualifiedName Language -> [s (FieldPattern l l d d)] -> Pattern Language l d s Source # tuplePattern :: forall s l (d :: NodeWrap). NonEmpty (s (Pattern l l d d)) -> Pattern Language l d s Source # variablePattern :: forall l (d :: NodeWrap) (s :: NodeWrap). Name Language -> Pattern Language l d s Source # wildcardPattern :: forall l (d :: NodeWrap) (s :: NodeWrap). Pattern Language l d s Source # constructorType :: forall s l (d :: NodeWrap). s (Constructor l l d d) -> Type Language l d s Source # functionConstructorType :: forall l (d :: NodeWrap) (s :: NodeWrap). Type Language l d s Source # functionType :: forall s l (d :: NodeWrap). s (Type l l d d) -> s (Type l l d d) -> Type Language l d s Source # listType :: forall s l (d :: NodeWrap). s (Type l l d d) -> Type Language l d s Source # strictType :: forall s l (d :: NodeWrap). s (Type l l d d) -> Type Language l d s Source # tupleType :: forall s l (d :: NodeWrap). NonEmpty (s (Type l l d d)) -> Type Language l d s Source # typeApplication :: forall s l (d :: NodeWrap). s (Type l l d d) -> s (Type l l d d) -> Type Language l d s Source # typeVariable :: forall l (d :: NodeWrap) (s :: NodeWrap). Name Language -> Type Language l d s Source # constructorReference :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName Language -> Constructor Language l d s Source # emptyListConstructor :: forall l (d :: NodeWrap) (s :: NodeWrap). Constructor Language l d s Source # tupleConstructor :: forall l (d :: NodeWrap) (s :: NodeWrap). Int -> Constructor Language l d s Source # unitConstructor :: forall l (d :: NodeWrap) (s :: NodeWrap). Constructor Language l d s Source # constructor :: forall s l (d :: NodeWrap). Name Language -> [s (Type l l d d)] -> DataConstructor Language l d s Source # recordConstructor :: forall s l (d :: NodeWrap). Name Language -> [s (FieldDeclaration l l d d)] -> DataConstructor Language l d s Source # constructorFields :: forall s l (d :: NodeWrap). NonEmpty (Name Language) -> s (Type l l d d) -> FieldDeclaration Language l d s Source # fieldBinding :: forall s l (d :: NodeWrap). QualifiedName Language -> s (Expression l l d d) -> FieldBinding Language l d s Source # fieldPattern :: forall s l (d :: NodeWrap). QualifiedName Language -> s (Pattern l l d d) -> FieldPattern Language l d s Source # simpleDerive :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName Language -> DerivingClause Language l d s Source # typeClassInstanceLHS :: forall s l (d :: NodeWrap). QualifiedName Language -> s (Type l l d d) -> ClassInstanceLHS Language l d s Source # simpleTypeLHS :: forall l (d :: NodeWrap) (s :: NodeWrap). Name Language -> [Name Language] -> TypeLHS Language l d s Source # prefixLHS :: forall s l (d :: NodeWrap). s (EquationLHS l l d d) -> NonEmpty (s (Pattern l l d d)) -> EquationLHS Language l d s Source # infixLHS :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> Name Language -> s (Pattern l l d d) -> EquationLHS Language l d s Source # patternLHS :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> EquationLHS Language l d s Source # variableLHS :: forall l (d :: NodeWrap) (s :: NodeWrap). Name Language -> EquationLHS Language l d s Source # caseAlternative :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> s (EquationRHS l l d d) -> [s (Declaration l l d d)] -> CaseAlternative Language l d s Source # guardedRHS :: forall s l (d :: NodeWrap). NonEmpty (s (GuardedExpression l l d d)) -> EquationRHS Language l d s Source # normalRHS :: forall s l (d :: NodeWrap). s (Expression l l d d) -> EquationRHS Language l d s Source # guardedExpression :: forall s l (d :: NodeWrap). [s (Statement l l d d)] -> s (Expression l l d d) -> GuardedExpression Language l d s Source # classConstraint :: forall s l (d :: NodeWrap). QualifiedName Language -> s (Type l l d d) -> Context Language l d s Source # constraints :: forall s l (d :: NodeWrap). [s (Context l l d d)] -> Context Language l d s Source # noContext :: forall l (d :: NodeWrap) (s :: NodeWrap). Context Language l d s Source # bindStatement :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> s (Expression l l d d) -> Statement Language l d s Source # expressionStatement :: forall s l (d :: NodeWrap). s (Expression l l d d) -> Statement Language l d s Source # letStatement :: forall s l (d :: NodeWrap). [s (Declaration l l d d)] -> Statement Language l d s Source # charLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Char -> Value Language l d s Source # floatingLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Rational -> Value Language l d s Source # integerLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Integer -> Value Language l d s Source # stringLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Text -> Value Language l d s Source # name :: Text -> Name Language Source # moduleName :: NonEmpty (Name Language) -> ModuleName Language Source # qualifiedName :: Maybe (ModuleName Language) -> Name Language -> QualifiedName Language Source # nonAssociative :: Associativity Language Source # leftAssociative :: Associativity Language Source # rightAssociative :: Associativity Language Source # cCall :: CallingConvention Language Source # cppCall :: CallingConvention Language Source # dotNetCall :: CallingConvention Language Source # jvmCall :: CallingConvention Language Source # stdCall :: CallingConvention Language Source # | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Haskell Language Source # | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Defined in Language.Haskell.Extensions.AST Associated Types
Methods anonymousModule :: forall s l (d :: NodeWrap). [s (Import l l d d)] -> [s (Declaration l l d d)] -> Module Language l d s Source # namedModule :: forall s l (d :: NodeWrap). ModuleName Language -> Maybe [s (Export l l d d)] -> [s (Import l l d d)] -> [s (Declaration l l d d)] -> Module Language l d s Source # withLanguagePragma :: forall s l (d :: NodeWrap). [ExtensionSwitch] -> s (Module l l d d) -> Module Language l d s Source # exportClassOrType :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName Language -> Maybe (Members Language) -> Export Language l d s Source # exportVar :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName Language -> Export Language l d s Source # reExportModule :: forall l (d :: NodeWrap) (s :: NodeWrap). ModuleName Language -> Export Language l d s Source # importDeclaration :: forall s l (d :: NodeWrap). Bool -> ModuleName Language -> Maybe (ModuleName Language) -> Maybe (s (ImportSpecification l l d d)) -> Import Language l d s Source # excludedImports :: forall s l (d :: NodeWrap). [s (ImportItem l l d d)] -> ImportSpecification Language l d s Source # includedImports :: forall s l (d :: NodeWrap). [s (ImportItem l l d d)] -> ImportSpecification Language l d s Source # importClassOrType :: forall l (d :: NodeWrap) (s :: NodeWrap). Name Language -> Maybe (Members Language) -> ImportItem Language l d s Source # importVar :: forall l (d :: NodeWrap) (s :: NodeWrap). Name Language -> ImportItem Language l d s Source # allMembers :: Members Language Source # memberList :: [Name Language] -> Members Language Source # classDeclaration :: forall s l (d :: NodeWrap). s (Context l l d d) -> s (TypeLHS l l d d) -> [s (Declaration l l d d)] -> Declaration Language l d s Source # dataDeclaration :: forall s l (d :: NodeWrap). s (Context l l d d) -> s (TypeLHS l l d d) -> [s (DataConstructor l l d d)] -> [s (DerivingClause l l d d)] -> Declaration Language l d s Source # defaultDeclaration :: forall s l (d :: NodeWrap). [s (Type l l d d)] -> Declaration Language l d s Source # equationDeclaration :: forall s l (d :: NodeWrap). s (EquationLHS l l d d) -> s (EquationRHS l l d d) -> [s (Declaration l l d d)] -> Declaration Language l d s Source # fixityDeclaration :: forall l (d :: NodeWrap) (s :: NodeWrap). Associativity Language -> Maybe Int -> NonEmpty (Name Language) -> Declaration Language l d s Source # foreignExport :: forall s l (d :: NodeWrap). CallingConvention Language -> Maybe Text -> Name Language -> s (Type l l d d) -> Declaration Language l d s Source # foreignImport :: forall s l (d :: NodeWrap). CallingConvention Language -> Maybe (CallSafety Language) -> Maybe Text -> Name Language -> s (Type l l d d) -> Declaration Language l d s Source # instanceDeclaration :: forall s l (d :: NodeWrap). s (Context l l d d) -> s (ClassInstanceLHS l l d d) -> [s (Declaration l l d d)] -> Declaration Language l d s Source # newtypeDeclaration :: forall s l (d :: NodeWrap). s (Context l l d d) -> s (TypeLHS l l d d) -> s (DataConstructor l l d d) -> [s (DerivingClause l l d d)] -> Declaration Language l d s Source # typeSynonymDeclaration :: forall s l (d :: NodeWrap). s (TypeLHS l l d d) -> s (Type l l d d) -> Declaration Language l d s Source # typeSignature :: forall s l (d :: NodeWrap). NonEmpty (Name Language) -> s (Context l l d d) -> s (Type l l d d) -> Declaration Language l d s Source # applyExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> s (Expression l l d d) -> Expression Language l d s Source # conditionalExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> s (Expression l l d d) -> s (Expression l l d d) -> Expression Language l d s Source # constructorExpression :: forall s l (d :: NodeWrap). s (Constructor l l d d) -> Expression Language l d s Source # caseExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> [s (CaseAlternative l l d d)] -> Expression Language l d s Source # doExpression :: forall s l (d :: NodeWrap). s (GuardedExpression l l d d) -> Expression Language l d s Source # infixExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> s (Expression l l d d) -> s (Expression l l d d) -> Expression Language l d s Source # leftSectionExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> QualifiedName Language -> Expression Language l d s Source # lambdaExpression :: forall s l (d :: NodeWrap). [s (Pattern l l d d)] -> s (Expression l l d d) -> Expression Language l d s Source # letExpression :: forall s l (d :: NodeWrap). [s (Declaration l l d d)] -> s (Expression l l d d) -> Expression Language l d s Source # listComprehension :: forall s l (d :: NodeWrap). s (Expression l l d d) -> NonEmpty (s (Statement l l d d)) -> Expression Language l d s Source # listExpression :: forall s l (d :: NodeWrap). [s (Expression l l d d)] -> Expression Language l d s Source # literalExpression :: forall s l (d :: NodeWrap). s (Value l l d d) -> Expression Language l d s Source # negate :: forall l (d :: NodeWrap) (s :: NodeWrap). Expression Language l d s Source # recordExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> [s (FieldBinding l l d d)] -> Expression Language l d s Source # referenceExpression :: forall l (d :: NodeWrap). QualifiedName Language -> Expression Language l d d Source # rightSectionExpression :: forall s l (d :: NodeWrap). QualifiedName Language -> s (Expression l l d d) -> Expression Language l d s Source # sequenceExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> Maybe (s (Expression l l d d)) -> Maybe (s (Expression l l d d)) -> Expression Language l d s Source # tupleExpression :: forall s l (d :: NodeWrap). NonEmpty (s (Expression l l d d)) -> Expression Language l d s Source # typedExpression :: forall s l (d :: NodeWrap). s (Expression l l d d) -> s (Type l l d d) -> Expression Language l d s Source # asPattern :: forall s l (d :: NodeWrap). Name Language -> s (Pattern l l d d) -> Pattern Language l d s Source # constructorPattern :: forall s l (d :: NodeWrap). s (Constructor l l d d) -> [s (Pattern l l d d)] -> Pattern Language l d s Source # infixPattern :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> QualifiedName Language -> s (Pattern l l d d) -> Pattern Language l d s Source # irrefutablePattern :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> Pattern Language l d s Source # listPattern :: forall s l (d :: NodeWrap). [s (Pattern l l d d)] -> Pattern Language l d s Source # literalPattern :: forall s l (d :: NodeWrap). s (Value l l d d) -> Pattern Language l d s Source # recordPattern :: forall s l (d :: NodeWrap). QualifiedName Language -> [s (FieldPattern l l d d)] -> Pattern Language l d s Source # tuplePattern :: forall s l (d :: NodeWrap). NonEmpty (s (Pattern l l d d)) -> Pattern Language l d s Source # variablePattern :: forall l (d :: NodeWrap) (s :: NodeWrap). Name Language -> Pattern Language l d s Source # wildcardPattern :: forall l (d :: NodeWrap) (s :: NodeWrap). Pattern Language l d s Source # constructorType :: forall s l (d :: NodeWrap). s (Constructor l l d d) -> Type Language l d s Source # functionConstructorType :: forall l (d :: NodeWrap) (s :: NodeWrap). Type Language l d s Source # functionType :: forall s l (d :: NodeWrap). s (Type l l d d) -> s (Type l l d d) -> Type Language l d s Source # listType :: forall s l (d :: NodeWrap). s (Type l l d d) -> Type Language l d s Source # strictType :: forall s l (d :: NodeWrap). s (Type l l d d) -> Type Language l d s Source # tupleType :: forall s l (d :: NodeWrap). NonEmpty (s (Type l l d d)) -> Type Language l d s Source # typeApplication :: forall s l (d :: NodeWrap). s (Type l l d d) -> s (Type l l d d) -> Type Language l d s Source # typeVariable :: forall l (d :: NodeWrap) (s :: NodeWrap). Name Language -> Type Language l d s Source # constructorReference :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName Language -> Constructor Language l d s Source # emptyListConstructor :: forall l (d :: NodeWrap) (s :: NodeWrap). Constructor Language l d s Source # tupleConstructor :: forall l (d :: NodeWrap) (s :: NodeWrap). Int -> Constructor Language l d s Source # unitConstructor :: forall l (d :: NodeWrap) (s :: NodeWrap). Constructor Language l d s Source # constructor :: forall s l (d :: NodeWrap). Name Language -> [s (Type l l d d)] -> DataConstructor Language l d s Source # recordConstructor :: forall s l (d :: NodeWrap). Name Language -> [s (FieldDeclaration l l d d)] -> DataConstructor Language l d s Source # constructorFields :: forall s l (d :: NodeWrap). NonEmpty (Name Language) -> s (Type l l d d) -> FieldDeclaration Language l d s Source # fieldBinding :: forall s l (d :: NodeWrap). QualifiedName Language -> s (Expression l l d d) -> FieldBinding Language l d s Source # fieldPattern :: forall s l (d :: NodeWrap). QualifiedName Language -> s (Pattern l l d d) -> FieldPattern Language l d s Source # simpleDerive :: forall l (d :: NodeWrap) (s :: NodeWrap). QualifiedName Language -> DerivingClause Language l d s Source # typeClassInstanceLHS :: forall s l (d :: NodeWrap). QualifiedName Language -> s (Type l l d d) -> ClassInstanceLHS Language l d s Source # simpleTypeLHS :: forall l (d :: NodeWrap) (s :: NodeWrap). Name Language -> [Name Language] -> TypeLHS Language l d s Source # prefixLHS :: forall s l (d :: NodeWrap). s (EquationLHS l l d d) -> NonEmpty (s (Pattern l l d d)) -> EquationLHS Language l d s Source # infixLHS :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> Name Language -> s (Pattern l l d d) -> EquationLHS Language l d s Source # patternLHS :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> EquationLHS Language l d s Source # variableLHS :: forall l (d :: NodeWrap) (s :: NodeWrap). Name Language -> EquationLHS Language l d s Source # caseAlternative :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> s (EquationRHS l l d d) -> [s (Declaration l l d d)] -> CaseAlternative Language l d s Source # guardedRHS :: forall s l (d :: NodeWrap). NonEmpty (s (GuardedExpression l l d d)) -> EquationRHS Language l d s Source # normalRHS :: forall s l (d :: NodeWrap). s (Expression l l d d) -> EquationRHS Language l d s Source # guardedExpression :: forall s l (d :: NodeWrap). [s (Statement l l d d)] -> s (Expression l l d d) -> GuardedExpression Language l d s Source # classConstraint :: forall s l (d :: NodeWrap). QualifiedName Language -> s (Type l l d d) -> Context Language l d s Source # constraints :: forall s l (d :: NodeWrap). [s (Context l l d d)] -> Context Language l d s Source # noContext :: forall l (d :: NodeWrap) (s :: NodeWrap). Context Language l d s Source # bindStatement :: forall s l (d :: NodeWrap). s (Pattern l l d d) -> s (Expression l l d d) -> Statement Language l d s Source # expressionStatement :: forall s l (d :: NodeWrap). s (Expression l l d d) -> Statement Language l d s Source # letStatement :: forall s l (d :: NodeWrap). [s (Declaration l l d d)] -> Statement Language l d s Source # charLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Char -> Value Language l d s Source # floatingLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Rational -> Value Language l d s Source # integerLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Integer -> Value Language l d s Source # stringLiteral :: forall l (d :: NodeWrap) (s :: NodeWrap). Text -> Value Language l d s Source # name :: Text -> Name Language Source # moduleName :: NonEmpty (Name Language) -> ModuleName Language Source # qualifiedName :: Maybe (ModuleName Language) -> Name Language -> QualifiedName Language Source # nonAssociative :: Associativity Language Source # leftAssociative :: Associativity Language Source # rightAssociative :: Associativity Language Source # cCall :: CallingConvention Language Source # cppCall :: CallingConvention Language Source # dotNetCall :: CallingConvention Language Source # jvmCall :: CallingConvention Language Source # stdCall :: CallingConvention Language Source # |
type family Import λ = (x :: TreeNodeSubKind) | x -> λ Source #
type family ImportItem λ = (x :: TreeNodeSubKind) | x -> λ Source #
Instances
type ImportItem Language Source # | |
Defined in Language.Haskell.AST | |
type ImportItem Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type family ImportSpecification λ = (x :: TreeNodeSubKind) | x -> λ Source #
Instances
type ImportSpecification Language Source # | |
Defined in Language.Haskell.AST | |
type ImportSpecification Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type family Module λ = (x :: TreeNodeSubKind) | x -> λ Source #
type family ModuleName λ = (x :: Type) | x -> λ Source #
Instances
type ModuleName Language Source # | |
Defined in Language.Haskell.AST | |
type ModuleName Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type family Pattern λ = (x :: TreeNodeSubKind) | x -> λ Source #
type family QualifiedName λ = (x :: Type) | x -> λ Source #
Instances
type QualifiedName Language Source # | |
Defined in Language.Haskell.AST | |
type QualifiedName Language Source # | |
Defined in Language.Haskell.Extensions.AST |
type Rank2lyFoldable l (f :: NodeWrap) = (Foldable (Module l l f), Foldable (Declaration l l f), Foldable (Expression l l f), Foldable (Type l l f), Foldable (EquationLHS l l f), Foldable (EquationRHS l l f), Foldable (GuardedExpression l l f), Foldable (Pattern l l f), Foldable (Statement l l f), Foldable (ClassInstanceLHS l l f), Foldable (TypeLHS l l f), Foldable (Import l l f), Foldable (ImportSpecification l l f), Foldable (ImportItem l l f), Foldable (Export l l f), Foldable (Context l l f), Foldable (DataConstructor l l f), Foldable (DerivingClause l l f), Foldable (FieldDeclaration l l f), Foldable (FieldBinding l l f), Foldable (FieldPattern l l f), Foldable (CaseAlternative l l f), Foldable (Constructor l l f), Foldable (Value l l f)) Source #
Named collection of constraints Rank2lyFoldable l f
means that every AST node of language l
with subtrees
wrapped in f
is Foldable
.
type Rank2lyFunctor l (f :: NodeWrap) = (Functor (Module l l f), Functor (Declaration l l f), Functor (Expression l l f), Functor (Type l l f), Functor (EquationLHS l l f), Functor (EquationRHS l l f), Functor (GuardedExpression l l f), Functor (Pattern l l f), Functor (Statement l l f), Functor (ClassInstanceLHS l l f), Functor (TypeLHS l l f), Functor (Import l l f), Functor (ImportSpecification l l f), Functor (ImportItem l l f), Functor (Export l l f), Functor (Context l l f), Functor (DataConstructor l l f), Functor (DerivingClause l l f), Functor (FieldDeclaration l l f), Functor (FieldBinding l l f), Functor (FieldPattern l l f), Functor (CaseAlternative l l f), Functor (Constructor l l f), Functor (Value l l f)) Source #
Named collection of constraints Rank2lyFunctor l f
means that every AST node of language l
with subtrees
wrapped in f
is a Functor
.
type Rank2lyTraversable l (f :: NodeWrap) = (Traversable (Module l l f), Traversable (Declaration l l f), Traversable (Expression l l f), Traversable (Type l l f), Traversable (EquationLHS l l f), Traversable (EquationRHS l l f), Traversable (GuardedExpression l l f), Traversable (Pattern l l f), Traversable (Statement l l f), Traversable (ClassInstanceLHS l l f), Traversable (TypeLHS l l f), Traversable (Import l l f), Traversable (ImportSpecification l l f), Traversable (ImportItem l l f), Traversable (Export l l f), Traversable (Context l l f), Traversable (DataConstructor l l f), Traversable (DerivingClause l l f), Traversable (FieldDeclaration l l f), Traversable (FieldBinding l l f), Traversable (FieldPattern l l f), Traversable (CaseAlternative l l f), Traversable (Constructor l l f), Traversable (Value l l f)) Source #
Named collection of constraints Rank2lyTraversable l f
means that every AST node of language l
with subtrees
wrapped in f
is Traversable
.
type family Statement λ = (x :: TreeNodeSubKind) | x -> λ Source #
type TreeNodeKind = Language -> TreeNodeSubKind Source #
The kind of a tree node with four type parameters:
- the language of the node itself
- the language of the node's subtrees
- the wrapper for the node's subtrees' subtrees
- the wrapper for the node's subtrees
type family Type λ = (x :: TreeNodeSubKind) | x -> λ Source #
type family TypeLHS λ = (x :: TreeNodeSubKind) | x -> λ Source #