Safe Haskell | None |
---|---|
Language | Haskell2010 |
Language.Haskell.Abstract
Contents
Description
The abstract node types forming a standard Haskell 2010 module. Every node type has the kind TreeNodeKind
.
Synopsis
- type TreeNodeKind = Language -> TreeNodeSubKind
- type TreeNodeSubKind = Language -> NodeWrap -> NodeWrap -> Type
- type NodeWrap = Type -> Type
- type Language = Type
- 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 DeeplyFunctor t l = (Functor t (Module l l), Functor t (Declaration l l), Functor t (Expression l l), Functor t (Type l l), Functor t (EquationLHS l l), Functor t (EquationRHS l l), Functor t (GuardedExpression l l), Functor t (Pattern l l), Functor t (Statement l l), Functor t (ClassInstanceLHS l l), Functor t (TypeLHS l l), Functor t (Import l l), Functor t (ImportSpecification l l), Functor t (ImportItem l l), Functor t (Export l l), Functor t (Context l l), Functor t (DataConstructor l l), Functor t (DerivingClause l l), Functor t (FieldDeclaration l l), Functor t (FieldBinding l l), Functor t (FieldPattern l l), Functor t (CaseAlternative l l), Functor t (Constructor l l), Functor t (Value l l))
- type DeeplyFoldable t l = (Foldable t (Module l l), Foldable t (Declaration l l), Foldable t (Expression l l), Foldable t (Type l l), Foldable t (EquationLHS l l), Foldable t (EquationRHS l l), Foldable t (GuardedExpression l l), Foldable t (Pattern l l), Foldable t (Statement l l), Foldable t (ClassInstanceLHS l l), Foldable t (TypeLHS l l), Foldable t (Import l l), Foldable t (ImportSpecification l l), Foldable t (ImportItem l l), Foldable t (Export l l), Foldable t (Context l l), Foldable t (DataConstructor l l), Foldable t (DerivingClause l l), Foldable t (FieldDeclaration l l), Foldable t (FieldBinding l l), Foldable t (FieldPattern l l), Foldable t (CaseAlternative l l), Foldable t (Constructor l l), Foldable t (Value l l))
- type DeeplyTraversable t l = (Traversable t (Module l l), Traversable t (Declaration l l), Traversable t (Expression l l), Traversable t (Type l l), Traversable t (EquationLHS l l), Traversable t (EquationRHS l l), Traversable t (GuardedExpression l l), Traversable t (Pattern l l), Traversable t (Statement l l), Traversable t (ClassInstanceLHS l l), Traversable t (TypeLHS l l), Traversable t (Import l l), Traversable t (ImportSpecification l l), Traversable t (ImportItem l l), Traversable t (Export l l), Traversable t (Context l l), Traversable t (DataConstructor l l), Traversable t (DerivingClause l l), Traversable t (FieldDeclaration l l), Traversable t (FieldBinding l l), Traversable t (FieldPattern l l), Traversable t (CaseAlternative l l), Traversable t (Constructor l l), Traversable t (Value l l))
- 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 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 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 UniversallyApplicable t l (d :: NodeWrap) = (At t (Module l l d d), At t (Declaration l l d d), At t (Expression l l d d), At t (Type l l d d), At t (EquationLHS l l d d), At t (EquationRHS l l d d), At t (GuardedExpression l l d d), At t (Pattern l l d d), At t (Statement l l d d), At t (ClassInstanceLHS l l d d), At t (TypeLHS l l d d), At t (Import l l d d), At t (ImportSpecification l l d d), At t (ImportItem l l d d), At t (Export l l d d), At t (Context l l d d), At t (DataConstructor l l d d), At t (DerivingClause l l d d), At t (FieldDeclaration l l d d), At t (FieldBinding l l d d), At t (FieldPattern l l d d), At t (CaseAlternative l l d d), At t (Constructor l l d d), At t (Value l l d d))
Kinds
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
Class
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
Constraint synonyms
type DeeplyFunctor t l = (Functor t (Module l l), Functor t (Declaration l l), Functor t (Expression l l), Functor t (Type l l), Functor t (EquationLHS l l), Functor t (EquationRHS l l), Functor t (GuardedExpression l l), Functor t (Pattern l l), Functor t (Statement l l), Functor t (ClassInstanceLHS l l), Functor t (TypeLHS l l), Functor t (Import l l), Functor t (ImportSpecification l l), Functor t (ImportItem l l), Functor t (Export l l), Functor t (Context l l), Functor t (DataConstructor l l), Functor t (DerivingClause l l), Functor t (FieldDeclaration l l), Functor t (FieldBinding l l), Functor t (FieldPattern l l), Functor t (CaseAlternative l l), Functor t (Constructor l l), Functor t (Value l 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 (Module l l), Foldable t (Declaration l l), Foldable t (Expression l l), Foldable t (Type l l), Foldable t (EquationLHS l l), Foldable t (EquationRHS l l), Foldable t (GuardedExpression l l), Foldable t (Pattern l l), Foldable t (Statement l l), Foldable t (ClassInstanceLHS l l), Foldable t (TypeLHS l l), Foldable t (Import l l), Foldable t (ImportSpecification l l), Foldable t (ImportItem l l), Foldable t (Export l l), Foldable t (Context l l), Foldable t (DataConstructor l l), Foldable t (DerivingClause l l), Foldable t (FieldDeclaration l l), Foldable t (FieldBinding l l), Foldable t (FieldPattern l l), Foldable t (CaseAlternative l l), Foldable t (Constructor l l), Foldable t (Value l 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 (Module l l), Traversable t (Declaration l l), Traversable t (Expression l l), Traversable t (Type l l), Traversable t (EquationLHS l l), Traversable t (EquationRHS l l), Traversable t (GuardedExpression l l), Traversable t (Pattern l l), Traversable t (Statement l l), Traversable t (ClassInstanceLHS l l), Traversable t (TypeLHS l l), Traversable t (Import l l), Traversable t (ImportSpecification l l), Traversable t (ImportItem l l), Traversable t (Export l l), Traversable t (Context l l), Traversable t (DataConstructor l l), Traversable t (DerivingClause l l), Traversable t (FieldDeclaration l l), Traversable t (FieldBinding l l), Traversable t (FieldPattern l l), Traversable t (CaseAlternative l l), Traversable t (Constructor l l), Traversable t (Value l l)) Source #
Named collection of constraints DeeplyTraversable t l
means that every AST node of language l
is
Traversable
for transformation t
.
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 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 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 UniversallyApplicable t l (d :: NodeWrap) = (At t (Module l l d d), At t (Declaration l l d d), At t (Expression l l d d), At t (Type l l d d), At t (EquationLHS l l d d), At t (EquationRHS l l d d), At t (GuardedExpression l l d d), At t (Pattern l l d d), At t (Statement l l d d), At t (ClassInstanceLHS l l d d), At t (TypeLHS l l d d), At t (Import l l d d), At t (ImportSpecification l l d d), At t (ImportItem l l d d), At t (Export l l d d), At t (Context l l d d), At t (DataConstructor l l d d), At t (DerivingClause l l d d), At t (FieldDeclaration l l d d), At t (FieldBinding l l d d), At t (FieldPattern l l d d), At t (CaseAlternative l l d d), At t (Constructor l l d d), At t (Value l l d 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
.