Safe Haskell | None |
---|---|
Language | Haskell2010 |
Language.Haskell.Extensions.Translation
Description
The module exports classes of methods for translating the AST from one language to another, along with their generic instances.
Synopsis
- class NameTranslation t where
- type Origin t
- type Target t
- translateName :: t -> Name (Origin t) -> Name (Target t)
- translateModuleName :: t -> ModuleName (Origin t) -> ModuleName (Target t)
- translateQualifiedName :: t -> QualifiedName (Origin t) -> QualifiedName (Target t)
- class WrapTranslation t where
- class (NameTranslation t, WrapTranslation t) => WrappedTranslation t (node :: TreeNodeKind) where
- class (NameTranslation t, WrapTranslation t) => Translation t (node :: TreeNodeKind) where
- class WrapTranslation t => DeeplyTranslatable t (node :: TreeNodeKind) where
- translateFully :: (FullyTranslatable t node, Functor (Wrap t)) => t -> Wrap t (node (Origin t) (Origin t) (Wrap t) (Wrap t)) -> Wrap t (node (Target t) (Target t) (Wrap t) (Wrap t))
- type FullyTranslatable t (node :: TreeNodeKind) = (WrappedTranslation t node, DeeplyTranslatable t node)
Documentation
class NameTranslation t where Source #
Class of transformations that can translate names from the origin to target language.
Minimal complete definition
Nothing
Methods
translateName :: t -> Name (Origin t) -> Name (Target t) Source #
default translateName :: (Name (Origin t) ~ Name (Origin t), Name (Target t) ~ Name (Target t)) => t -> Name (Origin t) -> Name (Target t) Source #
translateModuleName :: t -> ModuleName (Origin t) -> ModuleName (Target t) Source #
default translateModuleName :: (Name (Target t) ~ Name (Target t), ModuleName (Origin t) ~ ModuleName (Origin t), ModuleName (Target t) ~ ModuleName (Target t)) => t -> ModuleName (Origin t) -> ModuleName (Target t) Source #
translateQualifiedName :: t -> QualifiedName (Origin t) -> QualifiedName (Target t) Source #
default translateQualifiedName :: (Name (Target t) ~ Name (Target t), ModuleName (Target t) ~ ModuleName (Target t), QualifiedName (Origin t) ~ QualifiedName (Origin t), QualifiedName (Target t) ~ QualifiedName (Target t)) => t -> QualifiedName (Origin t) -> QualifiedName (Target t) Source #
Instances
class WrapTranslation t Source #
Instances
(QualifiedName λ ~ QualifiedName λ, ModuleName λ ~ ModuleName λ, Name λ ~ Name λ, QualifiedName l ~ QualifiedName l, ModuleName l ~ ModuleName l, Name l ~ Name l) => WrapTranslation (ReformulationOf e es λ l pos s) Source # | |||||
Defined in Language.Haskell.Extensions.Reformulator Associated Types
|
class (NameTranslation t, WrapTranslation t) => WrappedTranslation t (node :: TreeNodeKind) where Source #
Class of transformations that can translate wrapped nodes without changing their wrap nor their subtrees.
Minimal complete definition
Nothing
Methods
translateWrapped :: t -> Wrap t (node (Origin t) (Origin t) (Wrap t) (Wrap t)) -> Wrap t (node (Target t) (Origin t) (Wrap t) (Wrap t)) Source #
Instances
(NameTranslation t, WrapTranslation t, Functor (Wrap t), Translation t node) => WrappedTranslation t node Source # | |
(SameWrap 'NPlusKPatterns '['ViewPatterns] pos s λ l2, Haskell l2, Supports 'NPlusKPatterns λ, Supports 'ViewPatterns l2, FieldPattern l2 ~ FieldPattern l2, QualifiedName l2 ~ QualifiedName l2, ModuleName l2 ~ ModuleName l2, Name l2 ~ Name l2) => WrappedTranslation (ReformulationOf (On 'NPlusKPatterns) '[On 'ViewPatterns] λ l2 pos s) Pattern Source # | |
Defined in Language.Haskell.Extensions.Reformulator Methods translateWrapped :: ReformulationOf (On 'NPlusKPatterns) '[On 'ViewPatterns] λ l2 pos s -> Wrap (ReformulationOf (On 'NPlusKPatterns) '[On 'ViewPatterns] λ l2 pos s) (Pattern (Origin (ReformulationOf (On 'NPlusKPatterns) '[On 'ViewPatterns] λ l2 pos s)) (Origin (ReformulationOf (On 'NPlusKPatterns) '[On 'ViewPatterns] λ l2 pos s)) (Wrap (ReformulationOf (On 'NPlusKPatterns) '[On 'ViewPatterns] λ l2 pos s)) (Wrap (ReformulationOf (On 'NPlusKPatterns) '[On 'ViewPatterns] λ l2 pos s))) -> Wrap (ReformulationOf (On 'NPlusKPatterns) '[On 'ViewPatterns] λ l2 pos s) (Pattern (Target (ReformulationOf (On 'NPlusKPatterns) '[On 'ViewPatterns] λ l2 pos s)) (Origin (ReformulationOf (On 'NPlusKPatterns) '[On 'ViewPatterns] λ l2 pos s)) (Wrap (ReformulationOf (On 'NPlusKPatterns) '[On 'ViewPatterns] λ l2 pos s)) (Wrap (ReformulationOf (On 'NPlusKPatterns) '[On 'ViewPatterns] λ l2 pos s))) Source # | |
(SameWrap 'RecordWildCards '['NamedFieldPuns] pos s λ l, Supports 'RecordWildCards λ, Haskell l, FieldBinding l ~ FieldBinding l, QualifiedName l ~ QualifiedName l, ModuleName l ~ ModuleName l, Name l ~ Name l) => WrappedTranslation (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l pos s) Expression Source # | |
Defined in Language.Haskell.Extensions.Reformulator Methods translateWrapped :: ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l pos s -> Wrap (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l pos s) (Expression (Origin (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l pos s)) (Origin (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l pos s)) (Wrap (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l pos s)) (Wrap (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l pos s))) -> Wrap (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l pos s) (Expression (Target (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l pos s)) (Origin (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l pos s)) (Wrap (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l pos s)) (Wrap (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l pos s))) Source # | |
(SameWrap 'RecordWildCards '['NamedFieldPuns] pos s λ l2, Supports 'RecordWildCards λ, FieldPattern l2 ~ FieldPattern l2, QualifiedName l2 ~ QualifiedName l2, ModuleName l2 ~ ModuleName l2, Name l2 ~ Name l2) => WrappedTranslation (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l2 pos s) Pattern Source # | |
Defined in Language.Haskell.Extensions.Reformulator Methods translateWrapped :: ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l2 pos s -> Wrap (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l2 pos s) (Pattern (Origin (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l2 pos s)) (Origin (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l2 pos s)) (Wrap (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l2 pos s)) (Wrap (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l2 pos s))) -> Wrap (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l2 pos s) (Pattern (Target (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l2 pos s)) (Origin (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l2 pos s)) (Wrap (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l2 pos s)) (Wrap (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] λ l2 pos s))) Source # |
class (NameTranslation t, WrapTranslation t) => Translation t (node :: TreeNodeKind) where Source #
Class of transformations that can translate AST nodes from the origin to target language without changing their subtrees.
Methods
translate :: t -> node (Origin t) (Origin t) (Wrap t) (Wrap t) -> node (Target t) (Origin t) (Wrap t) (Wrap t) Source #
Instances
(NameTranslation t, WrapTranslation t, Functor (Wrap t)) => Translation t Module Source # | |
(NameTranslation t, WrapTranslation t, Functor (Wrap t), SupportFor 'ExplicitNamespaces (Origin t) ~ SupportFor 'ExplicitNamespaces (Target t), SupportFor 'ImplicitParameters (Origin t) ~ SupportFor 'ImplicitParameters (Target t), SupportFor 'LambdaCase (Origin t) ~ SupportFor 'LambdaCase (Target t), SupportFor 'QualifiedDo (Origin t) ~ SupportFor 'QualifiedDo (Target t), SupportFor 'RecursiveDo (Origin t) ~ SupportFor 'RecursiveDo (Target t), SupportFor 'RecordWildCards (Origin t) ~ SupportFor 'RecordWildCards (Target t), SupportFor 'UnboxedSums (Origin t) ~ SupportFor 'UnboxedSums (Target t), SupportFor 'UnboxedTuples (Origin t) ~ SupportFor 'UnboxedTuples (Target t)) => Translation t Expression Source # | |
Defined in Language.Haskell.Extensions.Translation | |
(NameTranslation t, WrapTranslation t, Functor (Wrap t)) => Translation t Import Source # | |
(NameTranslation t, WrapTranslation t, Functor (Wrap t), Name (Origin t) ~ Name (Origin t), Name (Target t) ~ Name (Target t), SupportFor 'ExtendedLiterals (Origin t) ~ SupportFor 'ExtendedLiterals (Target t), SupportFor 'MagicHash (Origin t) ~ SupportFor 'MagicHash (Target t)) => Translation t Value Source # | |
(NameTranslation t, WrapTranslation t, Functor (Wrap t), Coercible (node (Origin t) (Origin t) (Wrap t) (Wrap t)) (node (Target t) (Origin t) (Wrap t) (Wrap t))) => Translation t node Source # | |
(TextualMonoid s, DeeplyFoldable (Accounting l1 pos s) l1, QualifiedName l1 ~ QualifiedName l1, QualifiedName l2 ~ QualifiedName l2, ModuleName l1 ~ ModuleName l1, ModuleName l2 ~ ModuleName l2, Name l1 ~ Name l1, Name l2 ~ Name l2, Module l1 ~ Module l1, Module l2 ~ Module l2) => Translation (ReformulationOf e es l1 l2 pos s) Module Source # | |
Defined in Language.Haskell.Extensions.Reformulator Methods translate :: ReformulationOf e es l1 l2 pos s -> Module (Origin (ReformulationOf e es l1 l2 pos s)) (Origin (ReformulationOf e es l1 l2 pos s)) (Wrap (ReformulationOf e es l1 l2 pos s)) (Wrap (ReformulationOf e es l1 l2 pos s)) -> Module (Target (ReformulationOf e es l1 l2 pos s)) (Origin (ReformulationOf e es l1 l2 pos s)) (Wrap (ReformulationOf e es l1 l2 pos s)) (Wrap (ReformulationOf e es l1 l2 pos s)) Source # |
class WrapTranslation t => DeeplyTranslatable t (node :: TreeNodeKind) where Source #
Class of transformations that can translate an entire tree rooted in an AST node.
Methods
translateDeeply :: Functor (Wrap t) => t -> node l (Origin t) (Wrap t) (Wrap t) -> node l (Target t) (Wrap t) (Wrap t) Source #
Instances
(WrapTranslation t, FullyTranslatable t Declaration, FullyTranslatable t EquationRHS, FullyTranslatable t Pattern, CaseAlternative (Origin t) ~ CaseAlternative (Origin t), CaseAlternative (Target t) ~ CaseAlternative (Target t), Declaration (Origin t) ~ Declaration (Origin t), Declaration (Target t) ~ Declaration (Target t), EquationRHS (Origin t) ~ EquationRHS (Origin t), EquationRHS (Target t) ~ EquationRHS (Target t), Pattern (Origin t) ~ Pattern (Origin t), Pattern (Target t) ~ Pattern (Target t)) => DeeplyTranslatable t CaseAlternative Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> CaseAlternative l (Origin t) (Wrap t) (Wrap t) -> CaseAlternative l (Target t) (Wrap t) (Wrap t) Source # | |
(WrapTranslation t, WrappedTranslation t EquationLHS, FullyTranslatable t Pattern, EquationLHS (Origin t) ~ EquationLHS (Origin t), EquationLHS (Target t) ~ EquationLHS (Target t), Pattern (Origin t) ~ Pattern (Origin t), Pattern (Target t) ~ Pattern (Target t)) => DeeplyTranslatable t EquationLHS Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> EquationLHS l (Origin t) (Wrap t) (Wrap t) -> EquationLHS l (Target t) (Wrap t) (Wrap t) Source # | |
(WrapTranslation t, WrappedTranslation t EquationRHS, FullyTranslatable t Expression, FullyTranslatable t GuardedExpression, EquationRHS (Origin t) ~ EquationRHS (Origin t), EquationRHS (Target t) ~ EquationRHS (Target t), Expression (Origin t) ~ Expression (Origin t), Expression (Target t) ~ Expression (Target t), GuardedExpression (Origin t) ~ GuardedExpression (Origin t), GuardedExpression (Target t) ~ GuardedExpression (Target t)) => DeeplyTranslatable t EquationRHS Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> EquationRHS l (Origin t) (Wrap t) (Wrap t) -> EquationRHS l (Target t) (Wrap t) (Wrap t) Source # | |
(WrapTranslation t, FullyTranslatable t Type, FieldDeclaration (Origin t) ~ FieldDeclaration (Origin t), FieldDeclaration (Target t) ~ FieldDeclaration (Target t), Type (Origin t) ~ Type (Origin t), Type (Target t) ~ Type (Target t)) => DeeplyTranslatable t FieldDeclaration Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> FieldDeclaration l (Origin t) (Wrap t) (Wrap t) -> FieldDeclaration l (Target t) (Wrap t) (Wrap t) Source # | |
(WrapTranslation t, FullyTranslatable t Expression, FullyTranslatable t Statement, GuardedExpression (Origin t) ~ GuardedExpression (Origin t), GuardedExpression (Target t) ~ GuardedExpression (Target t), Expression (Origin t) ~ Expression (Origin t), Expression (Target t) ~ Expression (Target t), Statement (Origin t) ~ Statement (Origin t), Statement (Target t) ~ Statement (Target t)) => DeeplyTranslatable t GuardedExpression Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> GuardedExpression l (Origin t) (Wrap t) (Wrap t) -> GuardedExpression l (Target t) (Wrap t) (Wrap t) Source # | |
(WrapTranslation t, FullyTranslatable t ImportItem, ImportItem (Origin t) ~ ImportItem (Origin t), ImportItem (Target t) ~ ImportItem (Target t)) => DeeplyTranslatable t ImportSpecification Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> ImportSpecification l (Origin t) (Wrap t) (Wrap t) -> ImportSpecification l (Target t) (Wrap t) (Wrap t) Source # | |
(WrapTranslation t, WrappedTranslation t Module, FullyTranslatable t Export, FullyTranslatable t Import, FullyTranslatable t Declaration, Module (Origin t) ~ Module (Origin t), Module (Target t) ~ Module (Target t), Export (Origin t) ~ Export (Origin t), Export (Target t) ~ Export (Target t), Import (Origin t) ~ Import (Origin t), Import (Target t) ~ Import (Target t), Declaration (Origin t) ~ Declaration (Origin t), Declaration (Target t) ~ Declaration (Target t)) => DeeplyTranslatable t Module Source # | |
(WrapTranslation t, WrappedTranslation t ClassInstanceLHS, FullyTranslatable t Type, DeeplyTranslatable t TypeVarBinding, ClassInstanceLHS (Origin t) ~ ClassInstanceLHS (Origin t), ClassInstanceLHS (Target t) ~ ClassInstanceLHS (Target t), TypeLHS (Origin t) ~ TypeLHS (Origin t), TypeLHS (Target t) ~ TypeLHS (Target t), Type (Origin t) ~ Type (Origin t), Type (Target t) ~ Type (Target t), Kind (Origin t) ~ Type (Origin t), Kind (Target t) ~ Type (Target t)) => DeeplyTranslatable t ClassInstanceLHS Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> ClassInstanceLHS l (Origin t) (Wrap t) (Wrap t) -> ClassInstanceLHS l (Target t) (Wrap t) (Wrap t) Source # | |
(WrapTranslation t, Constructor (Origin t) ~ Constructor (Origin t), Constructor (Target t) ~ Constructor (Target t)) => DeeplyTranslatable t Constructor Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> Constructor l (Origin t) (Wrap t) (Wrap t) -> Constructor l (Target t) (Wrap t) (Wrap t) Source # | |
(WrapTranslation t, FullyTranslatable t Context, FullyTranslatable t Type, Context (Origin t) ~ Context (Origin t), Context (Target t) ~ Context (Target t), Type (Origin t) ~ Type (Origin t), Type (Target t) ~ Type (Target t)) => DeeplyTranslatable t Context Source # | |
(WrapTranslation t, WrappedTranslation t DataConstructor, FullyTranslatable t Context, FullyTranslatable t Type, FullyTranslatable t FieldDeclaration, DeeplyTranslatable t TypeVarBinding, DataConstructor (Origin t) ~ DataConstructor (Origin t), DataConstructor (Target t) ~ DataConstructor (Target t), Context (Origin t) ~ Context (Origin t), Context (Target t) ~ Context (Target t), Type (Origin t) ~ Type (Origin t), Type (Target t) ~ Type (Target t), TypeVarBinding (Origin t) ~ TypeVarBinding (Origin t), TypeVarBinding (Target t) ~ TypeVarBinding (Target t), FieldDeclaration (Origin t) ~ FieldDeclaration (Origin t), FieldDeclaration (Target t) ~ FieldDeclaration (Target t)) => DeeplyTranslatable t DataConstructor Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> DataConstructor l (Origin t) (Wrap t) (Wrap t) -> DataConstructor l (Target t) (Wrap t) (Wrap t) Source # | |
(WrapTranslation t, WrappedTranslation t Declaration, FullyTranslatable t Context, FullyTranslatable t ClassInstanceLHS, FullyTranslatable t FunctionalDependency, FullyTranslatable t TypeLHS, FullyTranslatable t Type, DeeplyTranslatable t TypeVarBinding, FullyTranslatable t DataConstructor, FullyTranslatable t GADTConstructor, FullyTranslatable t DerivingClause, FullyTranslatable t DerivingStrategy, FullyTranslatable t EquationLHS, FullyTranslatable t EquationRHS, FullyTranslatable t Expression, FullyTranslatable t PatternEquationClause, FullyTranslatable t PatternLHS, FullyTranslatable t Pattern, Declaration (Origin t) ~ Declaration (Origin t), Declaration (Target t) ~ Declaration (Target t), Context (Origin t) ~ Context (Origin t), Context (Target t) ~ Context (Target t), ClassInstanceLHS (Origin t) ~ ClassInstanceLHS (Origin t), ClassInstanceLHS (Target t) ~ ClassInstanceLHS (Target t), FunctionalDependency (Origin t) ~ FunctionalDependency (Origin t), FunctionalDependency (Target t) ~ FunctionalDependency (Target t), TypeLHS (Origin t) ~ TypeLHS (Origin t), TypeLHS (Target t) ~ TypeLHS (Target t), Type (Origin t) ~ Type (Origin t), Type (Target t) ~ Type (Target t), Kind (Origin t) ~ Type (Origin t), Kind (Target t) ~ Type (Target t), TypeVarBinding (Origin t) ~ TypeVarBinding (Origin t), TypeVarBinding (Target t) ~ TypeVarBinding (Target t), DataConstructor (Origin t) ~ DataConstructor (Origin t), DataConstructor (Target t) ~ DataConstructor (Target t), GADTConstructor (Origin t) ~ GADTConstructor (Origin t), GADTConstructor (Target t) ~ GADTConstructor (Target t), DerivingClause (Origin t) ~ DerivingClause (Origin t), DerivingClause (Target t) ~ DerivingClause (Target t), DerivingStrategy (Origin t) ~ DerivingStrategy (Origin t), DerivingStrategy (Target t) ~ DerivingStrategy (Target t), EquationLHS (Origin t) ~ EquationLHS (Origin t), EquationLHS (Target t) ~ EquationLHS (Target t), EquationRHS (Origin t) ~ EquationRHS (Origin t), EquationRHS (Target t) ~ EquationRHS (Target t), Expression (Origin t) ~ Expression (Origin t), Expression (Target t) ~ Expression (Target t), PatternLHS (Origin t) ~ PatternLHS (Origin t), PatternLHS (Target t) ~ PatternLHS (Target t), PatternEquationClause (Origin t) ~ PatternEquationClause (Origin t), PatternEquationClause (Target t) ~ PatternEquationClause (Target t), Pattern (Origin t) ~ Pattern (Origin t), Pattern (Target t) ~ Pattern (Target t)) => DeeplyTranslatable t Declaration Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> Declaration l (Origin t) (Wrap t) (Wrap t) -> Declaration l (Target t) (Wrap t) (Wrap t) Source # | |
(WrapTranslation t, FullyTranslatable t Type, FullyTranslatable t DerivingStrategy, DerivingClause (Origin t) ~ DerivingClause (Origin t), DerivingClause (Target t) ~ DerivingClause (Target t), Type (Origin t) ~ Type (Origin t), Type (Target t) ~ Type (Target t), DerivingStrategy (Origin t) ~ DerivingStrategy (Origin t), DerivingStrategy (Target t) ~ DerivingStrategy (Target t), Type (Origin t) ~ Type (Origin t), Type (Target t) ~ Type (Target t)) => DeeplyTranslatable t DerivingClause Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> DerivingClause l (Origin t) (Wrap t) (Wrap t) -> DerivingClause l (Target t) (Wrap t) (Wrap t) Source # | |
(WrapTranslation t, FullyTranslatable t Type, DerivingStrategy (Origin t) ~ DerivingStrategy (Origin t), DerivingStrategy (Target t) ~ DerivingStrategy (Target t), Type (Origin t) ~ Type (Origin t), Type (Target t) ~ Type (Target t)) => DeeplyTranslatable t DerivingStrategy Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> DerivingStrategy l (Origin t) (Wrap t) (Wrap t) -> DerivingStrategy l (Target t) (Wrap t) (Wrap t) Source # | |
(WrapTranslation t, FullyTranslatable t ImportSpecification, ModuleName (Origin t) ~ ModuleName (Origin t), QualifiedName (Origin t) ~ QualifiedName (Origin t)) => DeeplyTranslatable t Export Source # | |
(WrapTranslation t, WrappedTranslation t Expression, FullyTranslatable t CaseAlternative, FullyTranslatable t LambdaCasesAlternative, FullyTranslatable t Constructor, FullyTranslatable t Declaration, FullyTranslatable t FieldBinding, FullyTranslatable t GuardedExpression, FullyTranslatable t Pattern, FullyTranslatable t Statement, FullyTranslatable t Type, FullyTranslatable t Value, Expression (Origin t) ~ Expression (Origin t), Expression (Target t) ~ Expression (Target t), CaseAlternative (Origin t) ~ CaseAlternative (Origin t), CaseAlternative (Target t) ~ CaseAlternative (Target t), LambdaCasesAlternative (Origin t) ~ LambdaCasesAlternative (Origin t), LambdaCasesAlternative (Target t) ~ LambdaCasesAlternative (Target t), Constructor (Origin t) ~ Constructor (Origin t), Constructor (Target t) ~ Constructor (Target t), Declaration (Origin t) ~ Declaration (Origin t), Declaration (Target t) ~ Declaration (Target t), FieldBinding (Origin t) ~ FieldBinding (Origin t), FieldBinding (Target t) ~ FieldBinding (Target t), GuardedExpression (Origin t) ~ GuardedExpression (Origin t), GuardedExpression (Target t) ~ GuardedExpression (Target t), Pattern (Origin t) ~ Pattern (Origin t), Pattern (Target t) ~ Pattern (Target t), Statement (Origin t) ~ Statement (Origin t), Statement (Target t) ~ Statement (Target t), Type (Origin t) ~ Type (Origin t), Type (Target t) ~ Type (Target t), Value (Origin t) ~ Value (Origin t), Value (Target t) ~ Value (Target t)) => DeeplyTranslatable t Expression Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> Expression l (Origin t) (Wrap t) (Wrap t) -> Expression l (Target t) (Wrap t) (Wrap t) Source # | |
(WrapTranslation t, FullyTranslatable t Expression, FieldBinding (Origin t) ~ FieldBinding (Origin t), FieldBinding (Target t) ~ FieldBinding (Target t), Expression (Origin t) ~ Expression (Origin t), Expression (Target t) ~ Expression (Target t)) => DeeplyTranslatable t FieldBinding Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> FieldBinding l (Origin t) (Wrap t) (Wrap t) -> FieldBinding l (Target t) (Wrap t) (Wrap t) Source # | |
(WrapTranslation t, FullyTranslatable t Pattern, FieldPattern (Origin t) ~ FieldPattern (Origin t), FieldPattern (Target t) ~ FieldPattern (Target t), Pattern (Origin t) ~ Pattern (Origin t), Pattern (Target t) ~ Pattern (Target t)) => DeeplyTranslatable t FieldPattern Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> FieldPattern l (Origin t) (Wrap t) (Wrap t) -> FieldPattern l (Target t) (Wrap t) (Wrap t) Source # | |
WrapTranslation t => DeeplyTranslatable t FunctionalDependency Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> FunctionalDependency l (Origin t) (Wrap t) (Wrap t) -> FunctionalDependency l (Target t) (Wrap t) (Wrap t) Source # | |
(WrapTranslation t, FullyTranslatable t Context, FullyTranslatable t Type, DeeplyTranslatable t TypeVarBinding, Context (Origin t) ~ Context (Origin t), Context (Target t) ~ Context (Target t), Type (Origin t) ~ Type (Origin t), Type (Target t) ~ Type (Target t), TypeVarBinding (Origin t) ~ TypeVarBinding (Origin t), TypeVarBinding (Target t) ~ TypeVarBinding (Target t)) => DeeplyTranslatable t GADTConstructor Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> GADTConstructor l (Origin t) (Wrap t) (Wrap t) -> GADTConstructor l (Target t) (Wrap t) (Wrap t) Source # | |
(WrapTranslation t, FullyTranslatable t ImportSpecification, ModuleName (Origin t) ~ ModuleName (Origin t), ImportSpecification (Origin t) ~ ImportSpecification (Origin t), ImportSpecification (Target t) ~ ImportSpecification (Target t)) => DeeplyTranslatable t Import Source # | |
(WrapTranslation t, FullyTranslatable t ImportSpecification, QualifiedName (Origin t) ~ QualifiedName (Origin t)) => DeeplyTranslatable t ImportItem Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> ImportItem l (Origin t) (Wrap t) (Wrap t) -> ImportItem l (Target t) (Wrap t) (Wrap t) Source # | |
(WrapTranslation t, FullyTranslatable t Pattern, FullyTranslatable t EquationRHS, Pattern (Origin t) ~ Pattern (Origin t), Pattern (Target t) ~ Pattern (Target t), EquationRHS (Origin t) ~ EquationRHS (Origin t), EquationRHS (Target t) ~ EquationRHS (Target t)) => DeeplyTranslatable t LambdaCasesAlternative Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> LambdaCasesAlternative l (Origin t) (Wrap t) (Wrap t) -> LambdaCasesAlternative l (Target t) (Wrap t) (Wrap t) Source # | |
(WrapTranslation t, WrappedTranslation t Pattern, FullyTranslatable t Constructor, FullyTranslatable t FieldPattern, FullyTranslatable t Type, FullyTranslatable t Expression, FullyTranslatable t Value, Pattern (Origin t) ~ Pattern (Origin t), Pattern (Target t) ~ Pattern (Target t), Constructor (Origin t) ~ Constructor (Origin t), Constructor (Target t) ~ Constructor (Target t), Expression (Origin t) ~ Expression (Origin t), Expression (Target t) ~ Expression (Target t), FieldPattern (Origin t) ~ FieldPattern (Origin t), FieldPattern (Target t) ~ FieldPattern (Target t), Type (Origin t) ~ Type (Origin t), Kind (Origin t) ~ Type (Origin t), Type (Target t) ~ Type (Target t), Kind (Target t) ~ Type (Target t), Value (Origin t) ~ Value (Origin t), Value (Target t) ~ Value (Target t)) => DeeplyTranslatable t Pattern Source # | |
(WrapTranslation t, FullyTranslatable t PatternEquationLHS, FullyTranslatable t EquationRHS, FullyTranslatable t Declaration, PatternEquationLHS (Origin t) ~ PatternEquationLHS (Origin t), PatternEquationLHS (Target t) ~ PatternEquationLHS (Target t), EquationRHS (Origin t) ~ EquationRHS (Origin t), EquationRHS (Target t) ~ EquationRHS (Target t), Declaration (Origin t) ~ Declaration (Origin t), Declaration (Target t) ~ Declaration (Target t)) => DeeplyTranslatable t PatternEquationClause Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> PatternEquationClause l (Origin t) (Wrap t) (Wrap t) -> PatternEquationClause l (Target t) (Wrap t) (Wrap t) Source # | |
(WrapTranslation t, FullyTranslatable t Pattern, Pattern (Origin t) ~ Pattern (Origin t), Pattern (Target t) ~ Pattern (Target t)) => DeeplyTranslatable t PatternEquationLHS Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> PatternEquationLHS l (Origin t) (Wrap t) (Wrap t) -> PatternEquationLHS l (Target t) (Wrap t) (Wrap t) Source # | |
WrapTranslation t => DeeplyTranslatable t PatternLHS Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> PatternLHS l (Origin t) (Wrap t) (Wrap t) -> PatternLHS l (Target t) (Wrap t) (Wrap t) Source # | |
(WrapTranslation t, WrappedTranslation t Statement, FullyTranslatable t Declaration, FullyTranslatable t Expression, FullyTranslatable t Pattern, Expression (Origin t) ~ Expression (Origin t), Expression (Target t) ~ Expression (Target t), Declaration (Origin t) ~ Declaration (Origin t), Declaration (Target t) ~ Declaration (Target t), Pattern (Origin t) ~ Pattern (Origin t), Pattern (Target t) ~ Pattern (Target t), Statement (Origin t) ~ Statement (Origin t), Statement (Target t) ~ Statement (Target t)) => DeeplyTranslatable t Statement Source # | |
(WrapTranslation t, WrappedTranslation t Type, FullyTranslatable t Constructor, FullyTranslatable t Context, FullyTranslatable t FieldDeclaration, FullyTranslatable t Type, DeeplyTranslatable t TypeVarBinding, Constructor (Origin t) ~ Constructor (Origin t), Constructor (Target t) ~ Constructor (Target t), Context (Origin t) ~ Context (Origin t), Context (Target t) ~ Context (Target t), Type (Origin t) ~ Type (Origin t), Type (Target t) ~ Type (Target t), Kind (Origin t) ~ Type (Origin t), Kind (Target t) ~ Type (Target t), FieldDeclaration (Origin t) ~ FieldDeclaration (Origin t), FieldDeclaration (Target t) ~ FieldDeclaration (Target t), TypeVarBinding (Origin t) ~ TypeVarBinding (Origin t), TypeVarBinding (Target t) ~ TypeVarBinding (Target t)) => DeeplyTranslatable t Type Source # | |
(WrapTranslation t, WrappedTranslation t TypeLHS, DeeplyTranslatable t TypeVarBinding, TypeLHS (Origin t) ~ TypeLHS (Origin t), TypeLHS (Target t) ~ TypeLHS (Target t), Type (Origin t) ~ Type (Origin t), Type (Target t) ~ Type (Target t), TypeVarBinding (Origin t) ~ TypeVarBinding (Origin t), TypeVarBinding (Target t) ~ TypeVarBinding (Target t)) => DeeplyTranslatable t TypeLHS Source # | |
(WrapTranslation t, FullyTranslatable t Type, Kind (Origin t) ~ Type (Origin t), Kind (Target t) ~ Type (Target t)) => DeeplyTranslatable t TypeVarBinding Source # | |
Defined in Language.Haskell.Extensions.Translation Methods translateDeeply :: Functor (Wrap t) => t -> TypeVarBinding l (Origin t) (Wrap t) (Wrap t) -> TypeVarBinding l (Target t) (Wrap t) (Wrap t) Source # | |
WrapTranslation t => DeeplyTranslatable t Value Source # | |
translateFully :: (FullyTranslatable t node, Functor (Wrap t)) => t -> Wrap t (node (Origin t) (Origin t) (Wrap t) (Wrap t)) -> Wrap t (node (Target t) (Target t) (Wrap t) (Wrap t)) Source #
Translate an entire tree rooted in a wrapped AST node.
type FullyTranslatable t (node :: TreeNodeKind) = (WrappedTranslation t node, DeeplyTranslatable t node) Source #