language-haskell
Safe HaskellNone
LanguageHaskell2010

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

Documentation

class NameTranslation t where Source #

Class of transformations that can translate names from the origin to target language.

Minimal complete definition

Nothing

Associated Types

type Origin t Source #

type Target t Source #

Instances

Instances details
(QualifiedName λ ~ QualifiedName λ, ModuleName λ ~ ModuleName λ, Name λ ~ Name λ, QualifiedName l ~ QualifiedName l, ModuleName l ~ ModuleName l, Name l ~ Name l) => NameTranslation (ReformulationOf e es λ l pos s) Source # 
Instance details

Defined in Language.Haskell.Extensions.Reformulator

Associated Types

type Origin (ReformulationOf e es λ l pos s) 
Instance details

Defined in Language.Haskell.Extensions.Reformulator

type Origin (ReformulationOf e es λ l pos s) = λ
type Target (ReformulationOf e es λ l pos s) 
Instance details

Defined in Language.Haskell.Extensions.Reformulator

type Target (ReformulationOf e es λ l pos s) = l

Methods

translateName :: ReformulationOf e es λ l pos s -> Name (Origin (ReformulationOf e es λ l pos s)) -> Name (Target (ReformulationOf e es λ l pos s)) Source #

translateModuleName :: ReformulationOf e es λ l pos s -> ModuleName (Origin (ReformulationOf e es λ l pos s)) -> ModuleName (Target (ReformulationOf e es λ l pos s)) Source #

translateQualifiedName :: ReformulationOf e es λ l pos s -> QualifiedName (Origin (ReformulationOf e es λ l pos s)) -> QualifiedName (Target (ReformulationOf e es λ l pos s)) Source #

class WrapTranslation t Source #

Associated Types

type Wrap t :: NodeWrap Source #

Instances

Instances details
(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 # 
Instance details

Defined in Language.Haskell.Extensions.Reformulator

Associated Types

type Wrap (ReformulationOf e es λ l pos s) 
Instance details

Defined in Language.Haskell.Extensions.Reformulator

type Wrap (ReformulationOf e es λ l pos s) = Wrap λ pos s

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 #

default translateWrapped :: (Functor (Wrap t), Translation t node) => 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

Instances details
(NameTranslation t, WrapTranslation t, Functor (Wrap t), Translation t node) => WrappedTranslation t node Source # 
Instance details

Defined in Language.Haskell.Extensions.Translation

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 #

(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 # 
Instance details

Defined in Language.Haskell.Extensions.Reformulator

(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 # 
Instance details

Defined in Language.Haskell.Extensions.Reformulator

(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 # 
Instance details

Defined in Language.Haskell.Extensions.Reformulator

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

Instances details
(NameTranslation t, WrapTranslation t, Functor (Wrap t)) => Translation t Module Source # 
Instance details

Defined in Language.Haskell.Extensions.Translation

Methods

translate :: t -> Module (Origin t) (Origin t) (Wrap t) (Wrap t) -> Module (Target t) (Origin t) (Wrap t) (Wrap t) 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 # 
Instance details

Defined in Language.Haskell.Extensions.Translation

Methods

translate :: t -> Expression (Origin t) (Origin t) (Wrap t) (Wrap t) -> Expression (Target t) (Origin t) (Wrap t) (Wrap t) Source #

(NameTranslation t, WrapTranslation t, Functor (Wrap t)) => Translation t Import Source # 
Instance details

Defined in Language.Haskell.Extensions.Translation

Methods

translate :: t -> Import (Origin t) (Origin t) (Wrap t) (Wrap t) -> Import (Target t) (Origin t) (Wrap t) (Wrap t) 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 # 
Instance details

Defined in Language.Haskell.Extensions.Translation

Methods

translate :: t -> Value (Origin t) (Origin t) (Wrap t) (Wrap t) -> Value (Target t) (Origin t) (Wrap t) (Wrap t) 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 # 
Instance details

Defined in Language.Haskell.Extensions.Translation

Methods

translate :: t -> node (Origin t) (Origin t) (Wrap t) (Wrap t) -> node (Target t) (Origin t) (Wrap t) (Wrap t) 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 # 
Instance details

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

Instances details
(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 # 
Instance details

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 # 
Instance details

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 # 
Instance details

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 # 
Instance details

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 # 
Instance details

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 # 
Instance details

Defined in Language.Haskell.Extensions.Translation

(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 # 
Instance details

Defined in Language.Haskell.Extensions.Translation

Methods

translateDeeply :: Functor (Wrap t) => t -> Module l (Origin t) (Wrap t) (Wrap t) -> Module l (Target t) (Wrap t) (Wrap t) 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 # 
Instance details

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 # 
Instance details

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 # 
Instance details

Defined in Language.Haskell.Extensions.Translation

Methods

translateDeeply :: Functor (Wrap t) => t -> Context l (Origin t) (Wrap t) (Wrap t) -> Context l (Target t) (Wrap t) (Wrap t) 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 # 
Instance details

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 # 
Instance details

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 # 
Instance details

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 # 
Instance details

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 # 
Instance details

Defined in Language.Haskell.Extensions.Translation

Methods

translateDeeply :: Functor (Wrap t) => t -> Export l (Origin t) (Wrap t) (Wrap t) -> Export l (Target t) (Wrap t) (Wrap t) 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 # 
Instance details

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 # 
Instance details

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 # 
Instance details

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 # 
Instance details

Defined in Language.Haskell.Extensions.Translation

(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 # 
Instance details

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 # 
Instance details

Defined in Language.Haskell.Extensions.Translation

Methods

translateDeeply :: Functor (Wrap t) => t -> Import l (Origin t) (Wrap t) (Wrap t) -> Import l (Target t) (Wrap t) (Wrap t) Source #

(WrapTranslation t, FullyTranslatable t ImportSpecification, QualifiedName (Origin t) ~ QualifiedName (Origin t)) => DeeplyTranslatable t ImportItem Source # 
Instance details

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 # 
Instance details

Defined in Language.Haskell.Extensions.Translation

(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 # 
Instance details

Defined in Language.Haskell.Extensions.Translation

Methods

translateDeeply :: Functor (Wrap t) => t -> Pattern l (Origin t) (Wrap t) (Wrap t) -> Pattern l (Target t) (Wrap t) (Wrap t) 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 # 
Instance details

Defined in Language.Haskell.Extensions.Translation

(WrapTranslation t, FullyTranslatable t Pattern, Pattern (Origin t) ~ Pattern (Origin t), Pattern (Target t) ~ Pattern (Target t)) => DeeplyTranslatable t PatternEquationLHS Source # 
Instance details

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 # 
Instance details

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 # 
Instance details

Defined in Language.Haskell.Extensions.Translation

Methods

translateDeeply :: Functor (Wrap t) => t -> Statement l (Origin t) (Wrap t) (Wrap t) -> Statement l (Target t) (Wrap t) (Wrap t) 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 # 
Instance details

Defined in Language.Haskell.Extensions.Translation

Methods

translateDeeply :: Functor (Wrap t) => t -> Type l (Origin t) (Wrap t) (Wrap t) -> Type l (Target t) (Wrap t) (Wrap t) 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 # 
Instance details

Defined in Language.Haskell.Extensions.Translation

Methods

translateDeeply :: Functor (Wrap t) => t -> TypeLHS l (Origin t) (Wrap t) (Wrap t) -> TypeLHS l (Target t) (Wrap t) (Wrap t) Source #

(WrapTranslation t, FullyTranslatable t Type, Kind (Origin t) ~ Type (Origin t), Kind (Target t) ~ Type (Target t)) => DeeplyTranslatable t TypeVarBinding Source # 
Instance details

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 # 
Instance details

Defined in Language.Haskell.Extensions.Translation

Methods

translateDeeply :: Functor (Wrap t) => t -> Value l (Origin t) (Wrap t) (Wrap t) -> Value l (Target t) (Wrap t) (Wrap t) 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.