{-# Language ConstraintKinds, DataKinds, DefaultSignatures,
FlexibleContexts, FlexibleInstances, MultiParamTypeClasses,
ScopedTypeVariables, TypeFamilies, TypeOperators, UndecidableInstances #-}
{-# Options_GHC -Wall -Werror=incomplete-patterns #-}
module Language.Haskell.Extensions.Translation where
import Data.Coerce (Coercible, coerce)
import qualified Language.Haskell.Extensions.Abstract as Abstract
import qualified Language.Haskell.Extensions.AST as AST
import qualified Language.Haskell.Extensions as Extensions
class NameTranslation t where
type Origin t :: Abstract.Language
type Target t :: Abstract.Language
translateName :: t -> Abstract.Name (Origin t) -> Abstract.Name (Target t)
translateModuleName :: t -> Abstract.ModuleName (Origin t) -> Abstract.ModuleName (Target t)
translateQualifiedName :: t -> Abstract.QualifiedName (Origin t) -> Abstract.QualifiedName (Target t)
default translateName :: (Abstract.Name (Origin t) ~ AST.Name (Origin t),
Abstract.Name (Target t) ~ AST.Name (Target t))
=> t -> Abstract.Name (Origin t) -> Abstract.Name (Target t)
default translateModuleName :: (Abstract.Name (Target t) ~ AST.Name (Target t),
Abstract.ModuleName (Origin t) ~ AST.ModuleName (Origin t),
Abstract.ModuleName (Target t) ~ AST.ModuleName (Target t))
=> t -> Abstract.ModuleName (Origin t) -> Abstract.ModuleName (Target t)
default translateQualifiedName :: (Abstract.Name (Target t) ~ AST.Name (Target t),
Abstract.ModuleName (Target t) ~ AST.ModuleName (Target t),
Abstract.QualifiedName (Origin t) ~ AST.QualifiedName (Origin t),
Abstract.QualifiedName (Target t) ~ AST.QualifiedName (Target t))
=> t -> Abstract.QualifiedName (Origin t) -> Abstract.QualifiedName (Target t)
translateName = (Name (Origin t) -> Name (Target t))
-> t -> Name (Origin t) -> Name (Target t)
forall a b. a -> b -> a
const Name (Origin t) -> Name (Target t)
forall a b. Coercible a b => a -> b
coerce
translateModuleName = (ModuleName (Origin t) -> ModuleName (Target t))
-> t -> ModuleName (Origin t) -> ModuleName (Target t)
forall a b. a -> b -> a
const ModuleName (Origin t) -> ModuleName (Target t)
forall a b. Coercible a b => a -> b
coerce
translateQualifiedName = (QualifiedName (Origin t) -> QualifiedName (Target t))
-> t -> QualifiedName (Origin t) -> QualifiedName (Target t)
forall a b. a -> b -> a
const QualifiedName (Origin t) -> QualifiedName (Target t)
forall a b. Coercible a b => a -> b
coerce
class WrapTranslation t where
type Wrap t :: Abstract.NodeWrap
class (NameTranslation t, WrapTranslation t) => WrappedTranslation t (node :: Abstract.TreeNodeKind) where
translateWrapped :: t -> Wrap t (node (Origin t) (Origin t) (Wrap t) (Wrap t)) -> Wrap t (node (Target t) (Origin t) (Wrap t) (Wrap t))
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))
translateWrapped = (node (Origin t) (Origin t) (Wrap t) (Wrap t)
-> node (Target t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (node (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (node (Target t) (Origin t) (Wrap t) (Wrap t))
forall a b. (a -> b) -> Wrap t a -> Wrap t b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((node (Origin t) (Origin t) (Wrap t) (Wrap t)
-> node (Target t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (node (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (node (Target t) (Origin t) (Wrap t) (Wrap t)))
-> (t
-> node (Origin t) (Origin t) (Wrap t) (Wrap t)
-> node (Target t) (Origin t) (Wrap t) (Wrap t))
-> t
-> Wrap t (node (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (node (Target t) (Origin t) (Wrap t) (Wrap t))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. t
-> node (Origin t) (Origin t) (Wrap t) (Wrap t)
-> node (Target t) (Origin t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind).
Translation t node =>
t
-> node (Origin t) (Origin t) (Wrap t) (Wrap t)
-> node (Target t) (Origin t) (Wrap t) (Wrap t)
translate
class (NameTranslation t, WrapTranslation t) => Translation t (node :: Abstract.TreeNodeKind) where
translate :: t -> node (Origin t) (Origin t) (Wrap t) (Wrap t) -> node (Target t) (Origin t) (Wrap t) (Wrap t)
class WrapTranslation t => DeeplyTranslatable t (node :: Abstract.TreeNodeKind) where
translateDeeply :: Functor (Wrap t)
=> t -> node l (Origin t) (Wrap t) (Wrap t) -> node l (Target t) (Wrap t) (Wrap t)
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))
translateFully :: forall t (node :: TreeNodeKind).
(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))
translateFully t
t = (t
-> node (Target t) (Origin t) (Wrap t) (Wrap t)
-> node (Target t) (Target t) (Wrap t) (Wrap t)
forall l.
Functor (Wrap t) =>
t
-> node l (Origin t) (Wrap t) (Wrap t)
-> node l (Target t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind) l.
(DeeplyTranslatable t node, Functor (Wrap t)) =>
t
-> node l (Origin t) (Wrap t) (Wrap t)
-> node l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (node (Target t) (Origin t) (Wrap t) (Wrap t)
-> node (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (node (Target t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (node (Target t) (Target t) (Wrap t) (Wrap t))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>) (Wrap t (node (Target t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (node (Target t) (Target t) (Wrap t) (Wrap t)))
-> (Wrap t (node (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (node (Target t) (Origin t) (Wrap t) (Wrap t)))
-> Wrap t (node (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (node (Target t) (Target t) (Wrap t) (Wrap t))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. t
-> Wrap t (node (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (node (Target t) (Origin t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
WrappedTranslation 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))
translateWrapped t
t
type FullyTranslatable t node = (WrappedTranslation t node, DeeplyTranslatable t node)
instance (WrapTranslation t, WrappedTranslation t AST.Module,
FullyTranslatable t AST.Export, FullyTranslatable t AST.Import, FullyTranslatable t AST.Declaration,
Abstract.Module (Origin t) ~ AST.Module (Origin t), Abstract.Module (Target t) ~ AST.Module (Target t),
Abstract.Export (Origin t) ~ AST.Export (Origin t), Abstract.Export (Target t) ~ AST.Export (Target t),
Abstract.Import (Origin t) ~ AST.Import (Origin t), Abstract.Import (Target t) ~ AST.Import (Target t),
Abstract.Declaration (Origin t) ~ AST.Declaration (Origin t),
Abstract.Declaration (Target t) ~ AST.Declaration (Target t)) => DeeplyTranslatable t AST.Module where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> Module l (Origin t) (Wrap t) (Wrap t)
-> Module l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.NamedModule ModuleName l
modName Maybe [Wrap t (Export (Origin t) (Origin t) (Wrap t) (Wrap t))]
exports [Wrap t (Import (Origin t) (Origin t) (Wrap t) (Wrap t))]
imports [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
declarations) =
ModuleName l
-> Maybe [Wrap t (Export (Target t) (Target t) (Wrap t) (Wrap t))]
-> [Wrap t (Import (Target t) (Target t) (Wrap t) (Wrap t))]
-> [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
-> Module l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
ModuleName λ
-> Maybe [s (Export l l d d)]
-> [s (Import l l d d)]
-> [s (Declaration l l d d)]
-> Module λ l d s
AST.NamedModule ModuleName l
modName
((t
-> Wrap t (Export (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Export (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Export (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Export (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Export (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Export (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>) ([Wrap t (Export (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Export (Target t) (Target t) (Wrap t) (Wrap t))])
-> Maybe [Wrap t (Export (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> Maybe [Wrap t (Export (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe [Wrap t (Export (Origin t) (Origin t) (Wrap t) (Wrap t))]
Maybe [Wrap t (Export (Origin t) (Origin t) (Wrap t) (Wrap t))]
exports)
(t
-> Wrap t (Import (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Import (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Import (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Import (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Import (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Import (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Import (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Import (Origin t) (Origin t) (Wrap t) (Wrap t))]
imports)
(t
-> Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
declarations)
translateDeeply t
t (AST.AnonymousModule [Wrap t (Import (Origin t) (Origin t) (Wrap t) (Wrap t))]
imports [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
declarations) =
[Wrap t (Import (Target t) (Target t) (Wrap t) (Wrap t))]
-> [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
-> Module l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[s (Import l l d d)] -> [s (Declaration l l d d)] -> Module λ l d s
AST.AnonymousModule (t
-> Wrap t (Import (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Import (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Import (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Import (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Import (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Import (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Import (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Import (Origin t) (Origin t) (Wrap t) (Wrap t))]
imports) (t
-> Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
declarations)
translateDeeply t
t (AST.ExtendedModule [ExtensionSwitch]
extensions Wrap t (Module (Origin t) (Origin t) (Wrap t) (Wrap t))
m) = [ExtensionSwitch]
-> Wrap t (Module (Target t) (Target t) (Wrap t) (Wrap t))
-> Module l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[ExtensionSwitch] -> s (Module l l d d) -> Module λ l d s
AST.ExtendedModule [ExtensionSwitch]
extensions (t
-> Wrap t (Module (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Module (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Module (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Module (Origin t) (Origin t) (Wrap t) (Wrap t))
m)
instance (WrapTranslation t, FullyTranslatable t AST.ImportSpecification,
Abstract.ModuleName (Origin t) ~ AST.ModuleName (Origin t),
Abstract.QualifiedName (Origin t) ~ AST.QualifiedName (Origin t)) =>
DeeplyTranslatable t AST.Export where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> Export l (Origin t) (Wrap t) (Wrap t)
-> Export l (Target t) (Wrap t) (Wrap t)
translateDeeply t
_ (AST.ExportClassOrType QualifiedName l
name Maybe (Members l)
members) = QualifiedName l
-> Maybe (Members l) -> Export l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> Maybe (Members λ) -> Export λ l d s
AST.ExportClassOrType QualifiedName l
name Maybe (Members l)
members
translateDeeply t
_ (AST.ExportVar QualifiedName l
name) = QualifiedName l -> Export l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> Export λ l d s
AST.ExportVar QualifiedName l
name
translateDeeply t
_ (AST.ExportPattern QualifiedName l
name) = QualifiedName l -> Export l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> Export λ l d s
AST.ExportPattern QualifiedName l
name
translateDeeply t
_ (AST.ReExportModule ModuleName l
name) = ModuleName l -> Export l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
ModuleName λ -> Export λ l d s
AST.ReExportModule ModuleName l
name
instance (WrapTranslation t, FullyTranslatable t AST.ImportSpecification,
Abstract.ModuleName (Origin t) ~ AST.ModuleName (Origin t),
Abstract.ImportSpecification (Origin t) ~ AST.ImportSpecification (Origin t),
Abstract.ImportSpecification (Target t) ~ AST.ImportSpecification (Target t)) =>
DeeplyTranslatable t AST.Import where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> Import l (Origin t) (Wrap t) (Wrap t)
-> Import l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.Import Bool
safe Bool
qualified Maybe Text
package ModuleName l
name Maybe (ModuleName l)
alias Maybe
(Wrap
t (ImportSpecification (Origin t) (Origin t) (Wrap t) (Wrap t)))
detail) =
Bool
-> Bool
-> Maybe Text
-> ModuleName l
-> Maybe (ModuleName l)
-> Maybe
(Wrap
t (ImportSpecification (Target t) (Target t) (Wrap t) (Wrap t)))
-> Import l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
Bool
-> Bool
-> Maybe Text
-> ModuleName λ
-> Maybe (ModuleName λ)
-> Maybe (s (ImportSpecification l l d d))
-> Import λ l d s
AST.Import Bool
safe Bool
qualified Maybe Text
package ModuleName l
name Maybe (ModuleName l)
alias (t
-> Wrap
t (ImportSpecification (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (ImportSpecification (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap
t (ImportSpecification (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (ImportSpecification (Target t) (Target t) (Wrap t) (Wrap t)))
-> Maybe
(Wrap
t (ImportSpecification (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Maybe
(Wrap
t (ImportSpecification (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe
(Wrap
t (ImportSpecification (Origin t) (Origin t) (Wrap t) (Wrap t)))
Maybe
(Wrap
t (ImportSpecification (Origin t) (Origin t) (Wrap t) (Wrap t)))
detail)
instance (WrapTranslation t, FullyTranslatable t AST.ImportItem,
Abstract.ImportItem (Origin t) ~ AST.ImportItem (Origin t),
Abstract.ImportItem (Target t) ~ AST.ImportItem (Target t)) =>
DeeplyTranslatable t AST.ImportSpecification where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> ImportSpecification l (Origin t) (Wrap t) (Wrap t)
-> ImportSpecification l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.ImportSpecification Bool
hiding [Wrap t (ImportItem (Origin t) (Origin t) (Wrap t) (Wrap t))]
items) =
Bool
-> [Wrap t (ImportItem (Target t) (Target t) (Wrap t) (Wrap t))]
-> ImportSpecification l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
Bool -> [s (ImportItem l l d d)] -> ImportSpecification λ l d s
AST.ImportSpecification Bool
hiding (t
-> Wrap t (ImportItem (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (ImportItem (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (ImportItem (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (ImportItem (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (ImportItem (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (ImportItem (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (ImportItem (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (ImportItem (Origin t) (Origin t) (Wrap t) (Wrap t))]
items)
instance (WrapTranslation t, FullyTranslatable t AST.ImportSpecification,
Abstract.QualifiedName (Origin t) ~ AST.QualifiedName (Origin t)) =>
DeeplyTranslatable t AST.ImportItem where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> ImportItem l (Origin t) (Wrap t) (Wrap t)
-> ImportItem l (Target t) (Wrap t) (Wrap t)
translateDeeply t
_ (AST.ImportClassOrType Name l
name Maybe (Members l)
members) = Name l
-> Maybe (Members l) -> ImportItem l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> Maybe (Members λ) -> ImportItem λ l d s
AST.ImportClassOrType Name l
name Maybe (Members l)
members
translateDeeply t
_ (AST.ImportVar Name l
name) = Name l -> ImportItem l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> ImportItem λ l d s
AST.ImportVar Name l
name
translateDeeply t
_ (AST.ImportPattern Name l
name) = Name l -> ImportItem l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> ImportItem λ l d s
AST.ImportPattern Name l
name
instance (WrapTranslation t, WrappedTranslation t AST.Declaration,
FullyTranslatable t AST.Context, FullyTranslatable t AST.ClassInstanceLHS,
FullyTranslatable t AST.FunctionalDependency,
FullyTranslatable t AST.TypeLHS, FullyTranslatable t AST.Type, DeeplyTranslatable t AST.TypeVarBinding,
FullyTranslatable t AST.DataConstructor, FullyTranslatable t AST.GADTConstructor,
FullyTranslatable t AST.DerivingClause, FullyTranslatable t AST.DerivingStrategy,
FullyTranslatable t AST.EquationLHS, FullyTranslatable t AST.EquationRHS, FullyTranslatable t AST.Expression,
FullyTranslatable t AST.PatternEquationClause,
FullyTranslatable t AST.PatternLHS, FullyTranslatable t AST.Pattern,
Abstract.Declaration (Origin t) ~ AST.Declaration (Origin t),
Abstract.Declaration (Target t) ~ AST.Declaration (Target t),
Abstract.Context (Origin t) ~ AST.Context (Origin t),
Abstract.Context (Target t) ~ AST.Context (Target t),
Abstract.ClassInstanceLHS (Origin t) ~ AST.ClassInstanceLHS (Origin t),
Abstract.ClassInstanceLHS (Target t) ~ AST.ClassInstanceLHS (Target t),
Abstract.FunctionalDependency (Origin t) ~ AST.FunctionalDependency (Origin t),
Abstract.FunctionalDependency (Target t) ~ AST.FunctionalDependency (Target t),
Abstract.TypeLHS (Origin t) ~ AST.TypeLHS (Origin t),
Abstract.TypeLHS (Target t) ~ AST.TypeLHS (Target t),
Abstract.Type (Origin t) ~ AST.Type (Origin t),
Abstract.Type (Target t) ~ AST.Type (Target t),
Abstract.Kind (Origin t) ~ AST.Type (Origin t),
Abstract.Kind (Target t) ~ AST.Type (Target t),
Abstract.TypeVarBinding (Origin t) ~ AST.TypeVarBinding (Origin t),
Abstract.TypeVarBinding (Target t) ~ AST.TypeVarBinding (Target t),
Abstract.DataConstructor (Origin t) ~ AST.DataConstructor (Origin t),
Abstract.DataConstructor (Target t) ~ AST.DataConstructor (Target t),
Abstract.GADTConstructor (Origin t) ~ AST.GADTConstructor (Origin t),
Abstract.GADTConstructor (Target t) ~ AST.GADTConstructor (Target t),
Abstract.DerivingClause (Origin t) ~ AST.DerivingClause (Origin t),
Abstract.DerivingClause (Target t) ~ AST.DerivingClause (Target t),
Abstract.DerivingStrategy (Origin t) ~ AST.DerivingStrategy (Origin t),
Abstract.DerivingStrategy (Target t) ~ AST.DerivingStrategy (Target t),
Abstract.EquationLHS (Origin t) ~ AST.EquationLHS (Origin t),
Abstract.EquationLHS (Target t) ~ AST.EquationLHS (Target t),
Abstract.EquationRHS (Origin t) ~ AST.EquationRHS (Origin t),
Abstract.EquationRHS (Target t) ~ AST.EquationRHS (Target t),
Abstract.Expression (Origin t) ~ AST.Expression (Origin t),
Abstract.Expression (Target t) ~ AST.Expression (Target t),
Abstract.PatternLHS (Origin t) ~ AST.PatternLHS (Origin t),
Abstract.PatternLHS (Target t) ~ AST.PatternLHS (Target t),
Abstract.PatternEquationClause (Origin t) ~ AST.PatternEquationClause (Origin t),
Abstract.PatternEquationClause (Target t) ~ AST.PatternEquationClause (Target t),
Abstract.Pattern (Origin t) ~ AST.Pattern (Origin t),
Abstract.Pattern (Target t) ~ AST.Pattern (Target t)) =>
DeeplyTranslatable t AST.Declaration where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> Declaration l (Origin t) (Wrap t) (Wrap t)
-> Declaration l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.ClassDeclaration Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
methods) =
Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Context l l d d)
-> s (TypeLHS l l d d)
-> [s (Declaration l l d d)]
-> Declaration λ l d s
AST.ClassDeclaration (t
-> Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context) (t
-> Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
methods)
translateDeeply t
t (AST.FunDepClassDeclaration SupportFor 'FunctionalDependencies l
support Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs [Wrap
t (FunctionalDependency (Origin t) (Origin t) (Wrap t) (Wrap t))]
fundeps [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
methods) =
SupportFor 'FunctionalDependencies l
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> [Wrap
t (FunctionalDependency (Target t) (Target t) (Wrap t) (Wrap t))]
-> [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'FunctionalDependencies λ
-> s (Context l l d d)
-> s (TypeLHS l l d d)
-> [s (FunctionalDependency l l d d)]
-> [s (Declaration l l d d)]
-> Declaration λ l d s
AST.FunDepClassDeclaration SupportFor 'FunctionalDependencies l
support (t
-> Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context) (t
-> Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs)
(t
-> Wrap
t (FunctionalDependency (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (FunctionalDependency (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap
t (FunctionalDependency (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (FunctionalDependency (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (FunctionalDependency (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap
t (FunctionalDependency (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap
t (FunctionalDependency (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap
t (FunctionalDependency (Origin t) (Origin t) (Wrap t) (Wrap t))]
fundeps) (t
-> Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
methods)
translateDeeply t
t (AST.DataDeclaration Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind [Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
constructors [Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
derivings) =
Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Maybe (Wrap t (Kind (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (DataConstructor (Target t) (Target t) (Wrap t) (Wrap t))]
-> [Wrap
t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))]
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Context l l d d)
-> s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (DataConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration λ l d s
AST.DataDeclaration (t
-> Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context) (t
-> Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind)
(t
-> Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (DataConstructor (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (DataConstructor (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap
t (DataConstructor (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
constructors) (t
-> Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap
t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
derivings)
translateDeeply t
t (AST.GADTDeclaration Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind [Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
constructors [Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
derivings) =
Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Maybe (Wrap t (Kind (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (GADTConstructor (Target t) (Target t) (Wrap t) (Wrap t))]
-> [Wrap
t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))]
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (GADTConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration λ l d s
AST.GADTDeclaration (t
-> Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind)
(t
-> Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (GADTConstructor (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (GADTConstructor (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap
t (GADTConstructor (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
constructors) (t
-> Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap
t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
derivings)
translateDeeply t
t (AST.TypeDataDeclaration SupportFor 'TypeData l
sup Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind [Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
constructors) =
SupportFor 'TypeData l
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Maybe (Wrap t (Kind (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (DataConstructor (Target t) (Target t) (Wrap t) (Wrap t))]
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'TypeData λ
-> s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (DataConstructor l l d d)]
-> Declaration λ l d s
AST.TypeDataDeclaration SupportFor 'TypeData l
sup (t
-> Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind)
(t
-> Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (DataConstructor (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (DataConstructor (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap
t (DataConstructor (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
constructors)
translateDeeply t
t (AST.TypeGADTDeclaration SupportFor 'GADTs l
sup1 SupportFor 'TypeData l
sup2 Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind [Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
constructors) =
SupportFor 'GADTs l
-> SupportFor 'TypeData l
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Maybe (Wrap t (Kind (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (GADTConstructor (Target t) (Target t) (Wrap t) (Wrap t))]
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'GADTs λ
-> SupportFor 'TypeData λ
-> s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (GADTConstructor l l d d)]
-> Declaration λ l d s
AST.TypeGADTDeclaration SupportFor 'GADTs l
sup1 SupportFor 'TypeData l
sup2 (t
-> Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind)
(t
-> Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (GADTConstructor (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (GADTConstructor (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap
t (GADTConstructor (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
constructors)
translateDeeply t
t (AST.DefaultDeclaration [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
types) = [Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))]
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[s (Type l l d d)] -> Declaration λ l d s
AST.DefaultDeclaration (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
types)
translateDeeply t
t (AST.EquationDeclaration Wrap t (EquationLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs Wrap t (EquationRHS (Origin t) (Origin t) (Wrap t) (Wrap t))
rhs [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
wheres) =
Wrap t (EquationLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (EquationRHS (Target t) (Target t) (Wrap t) (Wrap t))
-> [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (EquationLHS l l d d)
-> s (EquationRHS l l d d)
-> [s (Declaration l l d d)]
-> Declaration λ l d s
AST.EquationDeclaration (t
-> Wrap t (EquationLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (EquationLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (EquationLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (EquationLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> Wrap t (EquationRHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (EquationRHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (EquationRHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (EquationRHS (Origin t) (Origin t) (Wrap t) (Wrap t))
rhs) (t
-> Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
wheres)
translateDeeply t
_ (AST.FixityDeclaration Associativity l
assoc Maybe Int
prec NonEmpty (Name l)
names) = Associativity l
-> Maybe Int
-> NonEmpty (Name l)
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
Associativity λ
-> Maybe Int -> NonEmpty (Name λ) -> Declaration λ l d s
AST.FixityDeclaration Associativity l
assoc Maybe Int
prec NonEmpty (Name l)
names
translateDeeply t
_ (AST.ExplicitTypeFixityDeclaration SupportFor 'ExplicitNamespaces l
sup Associativity l
assoc Maybe Int
prec NonEmpty (Name l)
names) =
SupportFor 'ExplicitNamespaces l
-> Associativity l
-> Maybe Int
-> NonEmpty (Name l)
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'ExplicitNamespaces λ
-> Associativity λ
-> Maybe Int
-> NonEmpty (Name λ)
-> Declaration λ l d s
AST.ExplicitTypeFixityDeclaration SupportFor 'ExplicitNamespaces l
sup Associativity l
assoc Maybe Int
prec NonEmpty (Name l)
names
translateDeeply t
_ (AST.ExplicitDataFixityDeclaration SupportFor 'ExplicitNamespaces l
sup Associativity l
assoc Maybe Int
prec NonEmpty (Name l)
names) =
SupportFor 'ExplicitNamespaces l
-> Associativity l
-> Maybe Int
-> NonEmpty (Name l)
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'ExplicitNamespaces λ
-> Associativity λ
-> Maybe Int
-> NonEmpty (Name λ)
-> Declaration λ l d s
AST.ExplicitDataFixityDeclaration SupportFor 'ExplicitNamespaces l
sup Associativity l
assoc Maybe Int
prec NonEmpty (Name l)
names
translateDeeply t
t (AST.ForeignExport CallingConvention l
convention Maybe Text
extName Name l
varName Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty) =
CallingConvention l
-> Maybe Text
-> Name l
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
CallingConvention λ
-> Maybe Text -> Name λ -> s (Type l l d d) -> Declaration λ l d s
AST.ForeignExport CallingConvention l
convention Maybe Text
extName Name l
varName (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty)
translateDeeply t
t (AST.ForeignImport CallingConvention l
convention Maybe (CallSafety l)
safety Maybe Text
extName Name l
varName Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty) =
CallingConvention l
-> Maybe (CallSafety l)
-> Maybe Text
-> Name l
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
CallingConvention λ
-> Maybe (CallSafety λ)
-> Maybe Text
-> Name λ
-> s (Type l l d d)
-> Declaration λ l d s
AST.ForeignImport CallingConvention l
convention Maybe (CallSafety l)
safety Maybe Text
extName Name l
varName (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty)
translateDeeply t
t (AST.InstanceDeclaration [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
methods) =
[TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap
t (ClassInstanceLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[TypeVarBinding λ l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> [s (Declaration l l d d)]
-> Declaration λ l d s
AST.InstanceDeclaration (t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall l.
Functor (Wrap t) =>
t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind) l.
(DeeplyTranslatable t node, Functor (Wrap t)) =>
t
-> node l (Origin t) (Wrap t) (Wrap t)
-> node l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t))
-> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
-> [TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars) (t
-> Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context)
(t
-> Wrap
t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (ClassInstanceLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
methods)
translateDeeply t
t (AST.NewtypeDeclaration Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
constructor [Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
derivings) =
Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Maybe (Wrap t (Kind (Target t) (Target t) (Wrap t) (Wrap t)))
-> Wrap t (DataConstructor (Target t) (Target t) (Wrap t) (Wrap t))
-> [Wrap
t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))]
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Context l l d d)
-> s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> s (DataConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration λ l d s
AST.NewtypeDeclaration (t
-> Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context) (t
-> Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind)
(t
-> Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (DataConstructor (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
constructor) (t
-> Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap
t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
derivings)
translateDeeply t
t (AST.GADTNewtypeDeclaration Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
constructor [Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
derivings) =
Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Maybe (Wrap t (Kind (Target t) (Target t) (Wrap t) (Wrap t)))
-> Wrap t (GADTConstructor (Target t) (Target t) (Wrap t) (Wrap t))
-> [Wrap
t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))]
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> s (GADTConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration λ l d s
AST.GADTNewtypeDeclaration (t
-> Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind)
(t
-> Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (GADTConstructor (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
constructor) (t
-> Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap
t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
derivings)
translateDeeply t
t (AST.TypeSynonymDeclaration Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty) =
Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (TypeLHS l l d d) -> s (Type l l d d) -> Declaration λ l d s
AST.TypeSynonymDeclaration (t
-> Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty)
translateDeeply t
t (AST.TypeSignature NonEmpty (Name l)
names Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty) =
NonEmpty (Name l)
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
NonEmpty (Name λ)
-> s (Context l l d d) -> s (Type l l d d) -> Declaration λ l d s
AST.TypeSignature NonEmpty (Name l)
names (t
-> Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty)
translateDeeply t
t (AST.DataFamilyDeclaration Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind) =
Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Maybe (Wrap t (Kind (Target t) (Target t) (Wrap t) (Wrap t)))
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d)) -> Declaration λ l d s
AST.DataFamilyDeclaration (t
-> Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind)
translateDeeply t
t (AST.OpenTypeFamilyDeclaration Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind) =
Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Maybe (Wrap t (Kind (Target t) (Target t) (Wrap t) (Wrap t)))
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d)) -> Declaration λ l d s
AST.OpenTypeFamilyDeclaration (t
-> Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind)
translateDeeply t
t (AST.ClosedTypeFamilyDeclaration Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
eqs) =
Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Maybe (Wrap t (Kind (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (Declaration l l d d)]
-> Declaration λ l d s
AST.ClosedTypeFamilyDeclaration (t
-> Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind) (t
-> Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
eqs)
translateDeeply t
t (AST.InjectiveOpenTypeFamilyDeclaration Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
var Maybe (Name l, NonEmpty (Name l))
deps) =
Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
-> Maybe (Name l, NonEmpty (Name l))
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (TypeLHS l l d d)
-> TypeVarBinding λ l d s
-> Maybe (Name λ, NonEmpty (Name λ))
-> Declaration λ l d s
AST.InjectiveOpenTypeFamilyDeclaration (t
-> Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall l.
Functor (Wrap t) =>
t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind) l.
(DeeplyTranslatable t node, Functor (Wrap t)) =>
t
-> node l (Origin t) (Wrap t) (Wrap t)
-> node l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
var) Maybe (Name l, NonEmpty (Name l))
deps
translateDeeply t
t (AST.InjectiveClosedTypeFamilyDeclaration Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
var Maybe (Name l, NonEmpty (Name l))
deps [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
eqs) =
Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
-> Maybe (Name l, NonEmpty (Name l))
-> [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (TypeLHS l l d d)
-> TypeVarBinding λ l d s
-> Maybe (Name λ, NonEmpty (Name λ))
-> [s (Declaration l l d d)]
-> Declaration λ l d s
AST.InjectiveClosedTypeFamilyDeclaration (t
-> Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall l.
Functor (Wrap t) =>
t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind) l.
(DeeplyTranslatable t node, Functor (Wrap t)) =>
t
-> node l (Origin t) (Wrap t) (Wrap t)
-> node l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
var)
Maybe (Name l, NonEmpty (Name l))
deps (t
-> Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
eqs)
translateDeeply t
t (AST.DataFamilyInstance [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind [Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
constructors [Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
derivings) =
[TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap
t (ClassInstanceLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Maybe (Wrap t (Kind (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (DataConstructor (Target t) (Target t) (Wrap t) (Wrap t))]
-> [Wrap
t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))]
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[TypeVarBinding λ l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (DataConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration λ l d s
AST.DataFamilyInstance (t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall l.
Functor (Wrap t) =>
t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind) l.
(DeeplyTranslatable t node, Functor (Wrap t)) =>
t
-> node l (Origin t) (Wrap t) (Wrap t)
-> node l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t))
-> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
-> [TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars) (t
-> Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context) (t
-> Wrap
t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (ClassInstanceLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs)
(t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind) (t
-> Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (DataConstructor (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (DataConstructor (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap
t (DataConstructor (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
constructors)
(t
-> Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap
t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
derivings)
translateDeeply t
t (AST.NewtypeFamilyInstance [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
constructor [Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
derivings) =
[TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap
t (ClassInstanceLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Maybe (Wrap t (Kind (Target t) (Target t) (Wrap t) (Wrap t)))
-> Wrap t (DataConstructor (Target t) (Target t) (Wrap t) (Wrap t))
-> [Wrap
t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))]
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[TypeVarBinding λ l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> Maybe (s (Kind l l d d))
-> s (DataConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration λ l d s
AST.NewtypeFamilyInstance (t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall l.
Functor (Wrap t) =>
t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind) l.
(DeeplyTranslatable t node, Functor (Wrap t)) =>
t
-> node l (Origin t) (Wrap t) (Wrap t)
-> node l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t))
-> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
-> [TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars) (t
-> Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context) (t
-> Wrap
t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (ClassInstanceLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs)
(t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind) (t
-> Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (DataConstructor (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
constructor)
(t
-> Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap
t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
derivings)
translateDeeply t
t (AST.GADTDataFamilyInstance [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind [Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
constructors [Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
derivings) =
[TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
-> Wrap
t (ClassInstanceLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Maybe (Wrap t (Kind (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (GADTConstructor (Target t) (Target t) (Wrap t) (Wrap t))]
-> [Wrap
t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))]
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[TypeVarBinding λ l d s]
-> s (ClassInstanceLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (GADTConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration λ l d s
AST.GADTDataFamilyInstance (t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall l.
Functor (Wrap t) =>
t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind) l.
(DeeplyTranslatable t node, Functor (Wrap t)) =>
t
-> node l (Origin t) (Wrap t) (Wrap t)
-> node l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t))
-> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
-> [TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars) (t
-> Wrap
t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (ClassInstanceLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind)
(t
-> Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (GADTConstructor (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (GADTConstructor (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap
t (GADTConstructor (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))]
constructors) (t
-> Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap
t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
derivings)
translateDeeply t
t (AST.GADTNewtypeFamilyInstance [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
constructor [Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
derivings) =
[TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
-> Wrap
t (ClassInstanceLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Maybe (Wrap t (Kind (Target t) (Target t) (Wrap t) (Wrap t)))
-> Wrap t (GADTConstructor (Target t) (Target t) (Wrap t) (Wrap t))
-> [Wrap
t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))]
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[TypeVarBinding λ l d s]
-> s (ClassInstanceLHS l l d d)
-> Maybe (s (Kind l l d d))
-> s (GADTConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration λ l d s
AST.GADTNewtypeFamilyInstance (t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall l.
Functor (Wrap t) =>
t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind) l.
(DeeplyTranslatable t node, Functor (Wrap t)) =>
t
-> node l (Origin t) (Wrap t) (Wrap t)
-> node l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t))
-> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
-> [TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars) (t
-> Wrap
t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (ClassInstanceLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Maybe (Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t)))
Maybe (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
kind)
(t
-> Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (GADTConstructor (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (GADTConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
constructor) (t
-> Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap
t (DerivingClause (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (DerivingClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
derivings)
translateDeeply t
t (AST.TypeFamilyInstance [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
rhs) =
[TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
-> Wrap
t (ClassInstanceLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[TypeVarBinding λ l d s]
-> s (ClassInstanceLHS l l d d)
-> s (Type l l d d)
-> Declaration λ l d s
AST.TypeFamilyInstance (t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall l.
Functor (Wrap t) =>
t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind) l.
(DeeplyTranslatable t node, Functor (Wrap t)) =>
t
-> node l (Origin t) (Wrap t) (Wrap t)
-> node l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t))
-> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
-> [TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars) (t
-> Wrap
t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (ClassInstanceLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
rhs)
translateDeeply t
t (AST.KindSignature Name l
name Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t))
kind) = Name l
-> Wrap t (Kind (Target t) (Target t) (Wrap t) (Wrap t))
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> s (Kind l l d d) -> Declaration λ l d s
AST.KindSignature Name l
name (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
kind)
translateDeeply t
t (AST.DefaultMethodSignature SupportFor 'DefaultSignatures l
support Name l
name Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty) =
SupportFor 'DefaultSignatures l
-> Name l
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'DefaultSignatures λ
-> Name λ
-> s (Context l l d d)
-> s (Type l l d d)
-> Declaration λ l d s
AST.DefaultMethodSignature SupportFor 'DefaultSignatures l
support Name l
name (t
-> Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty)
translateDeeply t
_ (AST.TypeRoleDeclaration QualifiedName l
name [TypeRole l]
role) = QualifiedName l
-> [TypeRole l] -> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> [TypeRole λ] -> Declaration λ l d s
AST.TypeRoleDeclaration QualifiedName l
name [TypeRole l]
role
translateDeeply t
t (AST.StandaloneDerivingDeclaration SupportFor 'StandaloneDeriving l
support [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) =
SupportFor 'StandaloneDeriving l
-> [TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap
t (ClassInstanceLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'StandaloneDeriving λ
-> [TypeVarBinding λ l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> Declaration λ l d s
AST.StandaloneDerivingDeclaration SupportFor 'StandaloneDeriving l
support (t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall l.
Functor (Wrap t) =>
t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind) l.
(DeeplyTranslatable t node, Functor (Wrap t)) =>
t
-> node l (Origin t) (Wrap t) (Wrap t)
-> node l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t))
-> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
-> [TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars)
(t
-> Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context) (t
-> Wrap
t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (ClassInstanceLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs)
translateDeeply t
t (AST.StandaloneStrategicDerivingDeclaration SupportFor 'StandaloneDeriving l
support1 SupportFor 'DerivingStrategies l
support2 Wrap t (DerivingStrategy (Origin t) (Origin t) (Wrap t) (Wrap t))
strategy [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) =
SupportFor 'StandaloneDeriving l
-> SupportFor 'DerivingStrategies l
-> Wrap
t (DerivingStrategy (Target t) (Target t) (Wrap t) (Wrap t))
-> [TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap
t (ClassInstanceLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'StandaloneDeriving λ
-> SupportFor 'DerivingStrategies λ
-> s (DerivingStrategy l l d d)
-> [TypeVarBinding λ l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> Declaration λ l d s
AST.StandaloneStrategicDerivingDeclaration SupportFor 'StandaloneDeriving l
support1 SupportFor 'DerivingStrategies l
support2 (t
-> Wrap
t (DerivingStrategy (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (DerivingStrategy (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (DerivingStrategy (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (DerivingStrategy (Origin t) (Origin t) (Wrap t) (Wrap t))
strategy)
(t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall l.
Functor (Wrap t) =>
t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind) l.
(DeeplyTranslatable t node, Functor (Wrap t)) =>
t
-> node l (Origin t) (Wrap t) (Wrap t)
-> node l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t))
-> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
-> [TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars)
(t
-> Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context)
(t
-> Wrap
t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (ClassInstanceLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs)
translateDeeply t
t (AST.ImplicitParameterDeclaration SupportFor 'ImplicitParameters l
support Name l
name Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
value) =
SupportFor 'ImplicitParameters l
-> Name l
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'ImplicitParameters λ
-> Name λ -> s (Expression l l d d) -> Declaration λ l d s
AST.ImplicitParameterDeclaration SupportFor 'ImplicitParameters l
support Name l
name (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
value)
translateDeeply t
t (AST.ImplicitPatternSynonym SupportFor 'PatternSynonyms l
support Wrap t (PatternLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
rhs) =
SupportFor 'PatternSynonyms l
-> Wrap t (PatternLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'PatternSynonyms λ
-> s (PatternLHS l l d d)
-> s (Pattern l l d d)
-> Declaration λ l d s
AST.ImplicitPatternSynonym SupportFor 'PatternSynonyms l
support (t
-> Wrap t (PatternLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (PatternLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (PatternLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (PatternLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
rhs)
translateDeeply t
t (AST.UnidirectionalPatternSynonym SupportFor 'PatternSynonyms l
support Wrap t (PatternLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
rhs) =
SupportFor 'PatternSynonyms l
-> Wrap t (PatternLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'PatternSynonyms λ
-> s (PatternLHS l l d d)
-> s (Pattern l l d d)
-> Declaration λ l d s
AST.UnidirectionalPatternSynonym SupportFor 'PatternSynonyms l
support (t
-> Wrap t (PatternLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (PatternLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (PatternLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (PatternLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
rhs)
translateDeeply t
t (AST.ExplicitPatternSynonym SupportFor 'PatternSynonyms l
support Wrap t (PatternLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
rhs [Wrap
t (PatternEquationClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
clauses) =
SupportFor 'PatternSynonyms l
-> Wrap t (PatternLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
-> [Wrap
t (PatternEquationClause (Target t) (Target t) (Wrap t) (Wrap t))]
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'PatternSynonyms λ
-> s (PatternLHS l l d d)
-> s (Pattern l l d d)
-> [s (PatternEquationClause l l d d)]
-> Declaration λ l d s
AST.ExplicitPatternSynonym SupportFor 'PatternSynonyms l
support (t
-> Wrap t (PatternLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (PatternLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (PatternLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (PatternLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
rhs) (t
-> Wrap
t (PatternEquationClause (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (PatternEquationClause (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap
t (PatternEquationClause (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (PatternEquationClause (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (PatternEquationClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap
t (PatternEquationClause (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap
t (PatternEquationClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap
t (PatternEquationClause (Origin t) (Origin t) (Wrap t) (Wrap t))]
clauses)
translateDeeply t
t (AST.PatternSynonymSignature SupportFor 'PatternSynonyms l
support NonEmpty (Name l)
names [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars1 Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context1 [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars2 Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context2 [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
args Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
result) =
SupportFor 'PatternSynonyms l
-> NonEmpty (Name l)
-> [TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
-> [TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
-> [Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))]
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'PatternSynonyms λ
-> NonEmpty (Name λ)
-> [TypeVarBinding λ l d s]
-> s (Context l l d d)
-> [TypeVarBinding λ l d s]
-> s (Context l l d d)
-> [s (Type l l d d)]
-> s (Type l l d d)
-> Declaration λ l d s
AST.PatternSynonymSignature SupportFor 'PatternSynonyms l
support NonEmpty (Name l)
names
(t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall l.
Functor (Wrap t) =>
t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind) l.
(DeeplyTranslatable t node, Functor (Wrap t)) =>
t
-> node l (Origin t) (Wrap t) (Wrap t)
-> node l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t))
-> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
-> [TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars1) (t
-> Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context1)
(t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall l.
Functor (Wrap t) =>
t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind) l.
(DeeplyTranslatable t node, Functor (Wrap t)) =>
t
-> node l (Origin t) (Wrap t) (Wrap t)
-> node l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t))
-> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
-> [TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars2) (t
-> Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context2)
(t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
args) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
result)
translateDeeply t
t (AST.NamedDefaultDeclaration SupportFor 'NamedDefaults l
support QualifiedName l
name [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
types) =
SupportFor 'NamedDefaults l
-> QualifiedName l
-> [Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))]
-> Declaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'NamedDefaults λ
-> QualifiedName λ -> [s (Type l l d d)] -> Declaration λ l d s
AST.NamedDefaultDeclaration SupportFor 'NamedDefaults l
support QualifiedName l
name (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
types)
instance (WrapTranslation t,
FullyTranslatable t AST.PatternEquationLHS, FullyTranslatable t AST.EquationRHS,
FullyTranslatable t AST.Declaration,
Abstract.PatternEquationLHS (Origin t) ~ AST.PatternEquationLHS (Origin t),
Abstract.PatternEquationLHS (Target t) ~ AST.PatternEquationLHS (Target t),
Abstract.EquationRHS (Origin t) ~ AST.EquationRHS (Origin t),
Abstract.EquationRHS (Target t) ~ AST.EquationRHS (Target t),
Abstract.Declaration (Origin t) ~ AST.Declaration (Origin t),
Abstract.Declaration (Target t) ~ AST.Declaration (Target t)) =>
DeeplyTranslatable t AST.PatternEquationClause where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> PatternEquationClause l (Origin t) (Wrap t) (Wrap t)
-> PatternEquationClause l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.PatternEquationClause SupportFor 'PatternSynonyms l
support Wrap t (PatternEquationLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs Wrap t (EquationRHS (Origin t) (Origin t) (Wrap t) (Wrap t))
rhs [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
wheres) =
SupportFor 'PatternSynonyms l
-> Wrap
t (PatternEquationLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (EquationRHS (Target t) (Target t) (Wrap t) (Wrap t))
-> [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
-> PatternEquationClause l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'PatternSynonyms λ
-> s (PatternEquationLHS l l d d)
-> s (EquationRHS l l d d)
-> [s (Declaration l l d d)]
-> PatternEquationClause λ l d s
AST.PatternEquationClause SupportFor 'PatternSynonyms l
support (t
-> Wrap
t (PatternEquationLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (PatternEquationLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (PatternEquationLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (PatternEquationLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> Wrap t (EquationRHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (EquationRHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (EquationRHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (EquationRHS (Origin t) (Origin t) (Wrap t) (Wrap t))
rhs) (t
-> Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
wheres)
instance (WrapTranslation t,
FullyTranslatable t AST.Pattern,
Abstract.Pattern (Origin t) ~ AST.Pattern (Origin t),
Abstract.Pattern (Target t) ~ AST.Pattern (Target t)) =>
DeeplyTranslatable t AST.PatternEquationLHS where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> PatternEquationLHS l (Origin t) (Wrap t) (Wrap t)
-> PatternEquationLHS l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.PrefixPatternEquationLHS Name l
name [Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
patterns) =
Name l
-> [Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))]
-> PatternEquationLHS l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> [s (Pattern l l d d)] -> PatternEquationLHS λ l d s
AST.PrefixPatternEquationLHS Name l
name (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
patterns)
translateDeeply t
t (AST.InfixPatternEquationLHS Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
l Name l
name Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
r) =
Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
-> Name l
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
-> PatternEquationLHS l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Pattern l l d d)
-> Name λ -> s (Pattern l l d d) -> PatternEquationLHS λ l d s
AST.InfixPatternEquationLHS (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
l) Name l
name (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
r)
instance (WrapTranslation t,
FullyTranslatable t AST.Context, FullyTranslatable t AST.Type,
Abstract.Context (Origin t) ~ AST.Context (Origin t),
Abstract.Context (Target t) ~ AST.Context (Target t),
Abstract.Type (Origin t) ~ AST.Type (Origin t),
Abstract.Type (Target t) ~ AST.Type (Target t)) =>
DeeplyTranslatable t AST.Context where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> Context l (Origin t) (Wrap t) (Wrap t)
-> Context l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.ClassConstraint QualifiedName l
className Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty) =
QualifiedName l
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Context l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> s (Type l l d d) -> Context λ l d s
AST.ClassConstraint QualifiedName l
className (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty)
translateDeeply t
t (AST.Constraints [Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))]
constraints) = [Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))]
-> Context l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[s (Context l l d d)] -> Context λ l d s
AST.Constraints (t
-> Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))]
constraints)
translateDeeply t
t (AST.TypeConstraint Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty) = Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Context l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d) -> Context λ l d s
AST.TypeConstraint (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty)
translateDeeply t
t (AST.TypeEquality Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
left Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
right) = Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Context l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d) -> s (Type l l d d) -> Context λ l d s
AST.TypeEquality (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
left) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
right)
translateDeeply t
t (AST.ImplicitParameterConstraint SupportFor 'ImplicitParameters l
sup Name l
name Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty) =
SupportFor 'ImplicitParameters l
-> Name l
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Context l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'ImplicitParameters λ
-> Name λ -> s (Type l l d d) -> Context λ l d s
AST.ImplicitParameterConstraint SupportFor 'ImplicitParameters l
sup Name l
name (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty)
translateDeeply t
_ Context l (Origin t) (Wrap t) (Wrap t)
AST.NoContext = Context l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Context λ l d s
AST.NoContext
instance (WrapTranslation t,
Abstract.Constructor (Origin t) ~ AST.Constructor (Origin t),
Abstract.Constructor (Target t) ~ AST.Constructor (Target t)) => DeeplyTranslatable t AST.Constructor where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> Constructor l (Origin t) (Wrap t) (Wrap t)
-> Constructor l (Target t) (Wrap t) (Wrap t)
translateDeeply t
_ (AST.ConstructorReference QualifiedName l
name) = QualifiedName l -> Constructor l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> Constructor λ l d s
AST.ConstructorReference QualifiedName l
name
translateDeeply t
_ Constructor l (Origin t) (Wrap t) (Wrap t)
AST.EmptyListConstructor = Constructor l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Constructor λ l d s
AST.EmptyListConstructor
translateDeeply t
_ (AST.TupleConstructor Int
size) = Int -> Constructor l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Int -> Constructor λ l d s
AST.TupleConstructor Int
size
translateDeeply t
_ (AST.UnboxedTupleConstructor SupportFor 'UnboxedTuples l
support Int
size) = SupportFor 'UnboxedTuples l
-> Int -> Constructor l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'UnboxedTuples λ -> Int -> Constructor λ l d s
AST.UnboxedTupleConstructor SupportFor 'UnboxedTuples l
support Int
size
translateDeeply t
_ (AST.UnboxedSumConstructor SupportFor 'UnboxedSums l
support Int
size) = SupportFor 'UnboxedSums l
-> Int -> Constructor l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'UnboxedSums λ -> Int -> Constructor λ l d s
AST.UnboxedSumConstructor SupportFor 'UnboxedSums l
support Int
size
translateDeeply t
_ Constructor l (Origin t) (Wrap t) (Wrap t)
AST.UnitConstructor = Constructor l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Constructor λ l d s
AST.UnitConstructor
instance WrapTranslation t => DeeplyTranslatable t AST.FunctionalDependency where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> FunctionalDependency l (Origin t) (Wrap t) (Wrap t)
-> FunctionalDependency l (Target t) (Wrap t) (Wrap t)
translateDeeply t
_ (AST.FunctionalDependency [Name l]
from [Name l]
to) = [Name l]
-> [Name l] -> FunctionalDependency l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[Name λ] -> [Name λ] -> FunctionalDependency λ l d s
AST.FunctionalDependency [Name l]
from [Name l]
to
instance WrapTranslation t => DeeplyTranslatable t AST.PatternLHS where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> PatternLHS l (Origin t) (Wrap t) (Wrap t)
-> PatternLHS l (Target t) (Wrap t) (Wrap t)
translateDeeply t
_ (AST.PrefixPatternLHS Name l
con [Name l]
args) = Name l -> [Name l] -> PatternLHS l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> [Name λ] -> PatternLHS λ l d s
AST.PrefixPatternLHS Name l
con [Name l]
args
translateDeeply t
_ (AST.InfixPatternLHS Name l
l Name l
con Name l
r) = Name l
-> Name l -> Name l -> PatternLHS l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> Name λ -> Name λ -> PatternLHS λ l d s
AST.InfixPatternLHS Name l
l Name l
con Name l
r
translateDeeply t
_ (AST.RecordPatternLHS Name l
con [Name l]
fields) = Name l -> [Name l] -> PatternLHS l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> [Name λ] -> PatternLHS λ l d s
AST.RecordPatternLHS Name l
con [Name l]
fields
instance (WrapTranslation t, WrappedTranslation t AST.DataConstructor,
FullyTranslatable t AST.Context, FullyTranslatable t AST.Type, FullyTranslatable t AST.FieldDeclaration,
DeeplyTranslatable t AST.TypeVarBinding,
Abstract.DataConstructor (Origin t) ~ AST.DataConstructor (Origin t),
Abstract.DataConstructor (Target t) ~ AST.DataConstructor (Target t),
Abstract.Context (Origin t) ~ AST.Context (Origin t),
Abstract.Context (Target t) ~ AST.Context (Target t),
Abstract.Type (Origin t) ~ AST.Type (Origin t),
Abstract.Type (Target t) ~ AST.Type (Target t),
Abstract.TypeVarBinding (Origin t) ~ AST.TypeVarBinding (Origin t),
Abstract.TypeVarBinding (Target t) ~ AST.TypeVarBinding (Target t),
Abstract.FieldDeclaration (Origin t) ~ AST.FieldDeclaration (Origin t),
Abstract.FieldDeclaration (Target t) ~ AST.FieldDeclaration (Target t)) =>
DeeplyTranslatable t AST.DataConstructor where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> DataConstructor l (Origin t) (Wrap t) (Wrap t)
-> DataConstructor l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.Constructor Name l
name [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
params) = Name l
-> [Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))]
-> DataConstructor l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> [s (Type l l d d)] -> DataConstructor λ l d s
AST.Constructor Name l
name (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
params)
translateDeeply t
t (AST.RecordConstructor Name l
name [Wrap t (FieldDeclaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
fields) = Name l
-> [Wrap
t (FieldDeclaration (Target t) (Target t) (Wrap t) (Wrap t))]
-> DataConstructor l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> [s (FieldDeclaration l l d d)] -> DataConstructor λ l d s
AST.RecordConstructor Name l
name (t
-> Wrap
t (FieldDeclaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (FieldDeclaration (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (FieldDeclaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (FieldDeclaration (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (FieldDeclaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap
t (FieldDeclaration (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (FieldDeclaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (FieldDeclaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
fields)
translateDeeply t
t (AST.ExistentialConstructor [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
body) =
[TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (DataConstructor (Target t) (Target t) (Wrap t) (Wrap t))
-> DataConstructor l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[TypeVarBinding λ l d s]
-> s (Context l l d d)
-> s (DataConstructor l l d d)
-> DataConstructor λ l d s
AST.ExistentialConstructor (t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall l.
Functor (Wrap t) =>
t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind) l.
(DeeplyTranslatable t node, Functor (Wrap t)) =>
t
-> node l (Origin t) (Wrap t) (Wrap t)
-> node l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t))
-> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
-> [TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars) (t
-> Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context) (t
-> Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (DataConstructor (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (DataConstructor (Origin t) (Origin t) (Wrap t) (Wrap t))
body)
instance (WrapTranslation t,
FullyTranslatable t AST.Context, FullyTranslatable t AST.Type, DeeplyTranslatable t AST.TypeVarBinding,
Abstract.Context (Origin t) ~ AST.Context (Origin t),
Abstract.Context (Target t) ~ AST.Context (Target t),
Abstract.Type (Origin t) ~ AST.Type (Origin t),
Abstract.Type (Target t) ~ AST.Type (Target t),
Abstract.TypeVarBinding (Origin t) ~ AST.TypeVarBinding (Origin t),
Abstract.TypeVarBinding (Target t) ~ AST.TypeVarBinding (Target t)) =>
DeeplyTranslatable t AST.GADTConstructor where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> GADTConstructor l (Origin t) (Wrap t) (Wrap t)
-> GADTConstructor l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.GADTConstructors NonEmpty (Name l)
names [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty) =
NonEmpty (Name l)
-> [TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> GADTConstructor l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
NonEmpty (Name λ)
-> [TypeVarBinding λ l d s]
-> s (Context l l d d)
-> s (Type l l d d)
-> GADTConstructor λ l d s
AST.GADTConstructors NonEmpty (Name l)
names (t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall l.
Functor (Wrap t) =>
t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind) l.
(DeeplyTranslatable t node, Functor (Wrap t)) =>
t
-> node l (Origin t) (Wrap t) (Wrap t)
-> node l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t))
-> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
-> [TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars) (t
-> Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty)
instance (WrapTranslation t, FullyTranslatable t AST.Type, FullyTranslatable t AST.DerivingStrategy,
Abstract.DerivingClause (Origin t) ~ AST.DerivingClause (Origin t),
Abstract.DerivingClause (Target t) ~ AST.DerivingClause (Target t),
Abstract.Type (Origin t) ~ AST.Type (Origin t),
Abstract.Type (Target t) ~ AST.Type (Target t),
Abstract.DerivingStrategy (Origin t) ~ AST.DerivingStrategy (Origin t),
Abstract.DerivingStrategy (Target t) ~ AST.DerivingStrategy (Target t),
Abstract.Type (Origin t) ~ AST.Type (Origin t),
Abstract.Type (Target t) ~ AST.Type (Target t)) =>
DeeplyTranslatable t AST.DerivingClause where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> DerivingClause l (Origin t) (Wrap t) (Wrap t)
-> DerivingClause l (Target t) (Wrap t) (Wrap t)
translateDeeply t
_ (AST.SimpleDerive QualifiedName l
name) = QualifiedName l -> DerivingClause l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> DerivingClause λ l d s
AST.SimpleDerive QualifiedName l
name
translateDeeply t
t (AST.StrategicDerive SupportFor 'DerivingStrategies l
support Wrap t (DerivingStrategy (Origin t) (Origin t) (Wrap t) (Wrap t))
strategy [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
types) =
SupportFor 'DerivingStrategies l
-> Wrap
t (DerivingStrategy (Target t) (Target t) (Wrap t) (Wrap t))
-> [Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))]
-> DerivingClause l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'DerivingStrategies λ
-> s (DerivingStrategy l l d d)
-> [s (Type l l d d)]
-> DerivingClause λ l d s
AST.StrategicDerive SupportFor 'DerivingStrategies l
support (t
-> Wrap
t (DerivingStrategy (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (DerivingStrategy (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (DerivingStrategy (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (DerivingStrategy (Origin t) (Origin t) (Wrap t) (Wrap t))
strategy) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
types)
translateDeeply t
t (AST.DeriveVia SupportFor 'DerivingVia l
support [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
types Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
via) =
SupportFor 'DerivingVia l
-> [Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))]
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> DerivingClause l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'DerivingVia λ
-> [s (Type l l d d)] -> s (Type l l d d) -> DerivingClause λ l d s
AST.DeriveVia SupportFor 'DerivingVia l
support (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
types) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
via)
instance (WrapTranslation t, FullyTranslatable t AST.Type,
Abstract.DerivingStrategy (Origin t) ~ AST.DerivingStrategy (Origin t),
Abstract.DerivingStrategy (Target t) ~ AST.DerivingStrategy (Target t),
Abstract.Type (Origin t) ~ AST.Type (Origin t),
Abstract.Type (Target t) ~ AST.Type (Target t)) =>
DeeplyTranslatable t AST.DerivingStrategy where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> DerivingStrategy l (Origin t) (Wrap t) (Wrap t)
-> DerivingStrategy l (Target t) (Wrap t) (Wrap t)
translateDeeply t
_ DerivingStrategy l (Origin t) (Wrap t) (Wrap t)
AST.Default = DerivingStrategy l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). DerivingStrategy λ l d s
AST.Default
translateDeeply t
_ DerivingStrategy l (Origin t) (Wrap t) (Wrap t)
AST.Stock = DerivingStrategy l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). DerivingStrategy λ l d s
AST.Stock
translateDeeply t
_ DerivingStrategy l (Origin t) (Wrap t) (Wrap t)
AST.Newtype = DerivingStrategy l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). DerivingStrategy λ l d s
AST.Newtype
translateDeeply t
_ DerivingStrategy l (Origin t) (Wrap t) (Wrap t)
AST.AnyClass = DerivingStrategy l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). DerivingStrategy λ l d s
AST.AnyClass
translateDeeply t
t (AST.Via SupportFor 'DerivingVia l
support Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty) = SupportFor 'DerivingVia l
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> DerivingStrategy l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'DerivingVia λ
-> s (Type l l d d) -> DerivingStrategy λ l d s
AST.Via SupportFor 'DerivingVia l
support (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty)
instance (WrapTranslation t, FullyTranslatable t AST.Type,
Abstract.FieldDeclaration (Origin t) ~ AST.FieldDeclaration (Origin t),
Abstract.FieldDeclaration (Target t) ~ AST.FieldDeclaration (Target t),
Abstract.Type (Origin t) ~ AST.Type (Origin t),
Abstract.Type (Target t) ~ AST.Type (Target t)) =>
DeeplyTranslatable t AST.FieldDeclaration where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> FieldDeclaration l (Origin t) (Wrap t) (Wrap t)
-> FieldDeclaration l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.ConstructorFields NonEmpty (Name l)
name Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty) = NonEmpty (Name l)
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> FieldDeclaration l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
NonEmpty (Name λ) -> s (Type l l d d) -> FieldDeclaration λ l d s
AST.ConstructorFields NonEmpty (Name l)
name (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty)
instance (WrapTranslation t, FullyTranslatable t AST.Expression,
Abstract.FieldBinding (Origin t) ~ AST.FieldBinding (Origin t),
Abstract.FieldBinding (Target t) ~ AST.FieldBinding (Target t),
Abstract.Expression (Origin t) ~ AST.Expression (Origin t),
Abstract.Expression (Target t) ~ AST.Expression (Target t)) =>
DeeplyTranslatable t AST.FieldBinding where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> FieldBinding l (Origin t) (Wrap t) (Wrap t)
-> FieldBinding l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.FieldBinding QualifiedName l
name Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
value) = QualifiedName l
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> FieldBinding l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> s (Expression l l d d) -> FieldBinding λ l d s
AST.FieldBinding QualifiedName l
name (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
value)
translateDeeply t
_ (AST.PunnedFieldBinding QualifiedName l
name) = QualifiedName l -> FieldBinding l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> FieldBinding λ l d s
AST.PunnedFieldBinding QualifiedName l
name
instance (WrapTranslation t, FullyTranslatable t AST.Pattern,
Abstract.FieldPattern (Origin t) ~ AST.FieldPattern (Origin t),
Abstract.FieldPattern (Target t) ~ AST.FieldPattern (Target t),
Abstract.Pattern (Origin t) ~ AST.Pattern (Origin t),
Abstract.Pattern (Target t) ~ AST.Pattern (Target t)) =>
DeeplyTranslatable t AST.FieldPattern where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> FieldPattern l (Origin t) (Wrap t) (Wrap t)
-> FieldPattern l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.FieldPattern QualifiedName l
name Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
pat) = QualifiedName l
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
-> FieldPattern l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> s (Pattern l l d d) -> FieldPattern λ l d s
AST.FieldPattern QualifiedName l
name (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
pat)
translateDeeply t
_ (AST.PunnedFieldPattern QualifiedName l
name) = QualifiedName l -> FieldPattern l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> FieldPattern λ l d s
AST.PunnedFieldPattern QualifiedName l
name
instance (WrapTranslation t, WrappedTranslation t AST.TypeLHS, DeeplyTranslatable t AST.TypeVarBinding,
Abstract.TypeLHS (Origin t) ~ AST.TypeLHS (Origin t),
Abstract.TypeLHS (Target t) ~ AST.TypeLHS (Target t),
Abstract.Type (Origin t) ~ AST.Type (Origin t),
Abstract.Type (Target t) ~ AST.Type (Target t),
Abstract.TypeVarBinding (Origin t) ~ AST.TypeVarBinding (Origin t),
Abstract.TypeVarBinding (Target t) ~ AST.TypeVarBinding (Target t)) =>
DeeplyTranslatable t AST.TypeLHS where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> TypeLHS l (Origin t) (Wrap t) (Wrap t)
-> TypeLHS l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.SimpleTypeLHS Name l
name [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars) = Name l
-> [TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
-> TypeLHS l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> [TypeVarBinding λ l d s] -> TypeLHS λ l d s
AST.SimpleTypeLHS Name l
name (t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall l.
Functor (Wrap t) =>
t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind) l.
(DeeplyTranslatable t node, Functor (Wrap t)) =>
t
-> node l (Origin t) (Wrap t) (Wrap t)
-> node l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t))
-> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
-> [TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars)
translateDeeply t
t (AST.TypeLHSApplication Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
left TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
var) =
Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
-> TypeLHS l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (TypeLHS l l d d) -> TypeVarBinding λ l d s -> TypeLHS λ l d s
AST.TypeLHSApplication (t
-> Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
left) (t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall l.
Functor (Wrap t) =>
t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind) l.
(DeeplyTranslatable t node, Functor (Wrap t)) =>
t
-> node l (Origin t) (Wrap t) (Wrap t)
-> node l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
var)
translateDeeply t
t (AST.TypeLHSTypeApplication SupportFor 'TypeAbstractions l
support Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
left TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
var) =
SupportFor 'TypeAbstractions l
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
-> TypeLHS l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'TypeAbstractions λ
-> s (TypeLHS l l d d) -> TypeVarBinding λ l d s -> TypeLHS λ l d s
AST.TypeLHSTypeApplication SupportFor 'TypeAbstractions l
support (t
-> Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (TypeLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (TypeLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
left) (t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall l.
Functor (Wrap t) =>
t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind) l.
(DeeplyTranslatable t node, Functor (Wrap t)) =>
t
-> node l (Origin t) (Wrap t) (Wrap t)
-> node l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
var)
instance (WrapTranslation t, WrappedTranslation t AST.ClassInstanceLHS,
FullyTranslatable t AST.Type, DeeplyTranslatable t AST.TypeVarBinding,
Abstract.ClassInstanceLHS (Origin t) ~ AST.ClassInstanceLHS (Origin t),
Abstract.ClassInstanceLHS (Target t) ~ AST.ClassInstanceLHS (Target t),
Abstract.TypeLHS (Origin t) ~ AST.TypeLHS (Origin t),
Abstract.TypeLHS (Target t) ~ AST.TypeLHS (Target t),
Abstract.Type (Origin t) ~ AST.Type (Origin t),
Abstract.Type (Target t) ~ AST.Type (Target t),
Abstract.Kind (Origin t) ~ AST.Type (Origin t),
Abstract.Kind (Target t) ~ AST.Type (Target t)) =>
DeeplyTranslatable t AST.ClassInstanceLHS where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> ClassInstanceLHS l (Origin t) (Wrap t) (Wrap t)
-> ClassInstanceLHS l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.TypeClassInstanceLHS QualifiedName l
name Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty) = QualifiedName l
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> ClassInstanceLHS l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> s (Type l l d d) -> ClassInstanceLHS λ l d s
AST.TypeClassInstanceLHS QualifiedName l
name (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty)
translateDeeply t
_ (AST.ClassReferenceInstanceLHS QualifiedName l
name) = QualifiedName l -> ClassInstanceLHS l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> ClassInstanceLHS λ l d s
AST.ClassReferenceInstanceLHS QualifiedName l
name
translateDeeply t
t (AST.InfixTypeClassInstanceLHS Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
left QualifiedName l
op Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
right) =
Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> QualifiedName l
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> ClassInstanceLHS l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d)
-> QualifiedName λ -> s (Type l l d d) -> ClassInstanceLHS λ l d s
AST.InfixTypeClassInstanceLHS (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
left) QualifiedName l
op (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
right)
translateDeeply t
t (AST.ClassInstanceLHSApplication Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
left Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
right) =
Wrap t (ClassInstanceLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> ClassInstanceLHS l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (ClassInstanceLHS l l d d)
-> s (Type l l d d) -> ClassInstanceLHS λ l d s
AST.ClassInstanceLHSApplication (t
-> Wrap
t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (ClassInstanceLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
left) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
right)
translateDeeply t
t (AST.ClassInstanceLHSKindApplication Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
left Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t))
right) =
Wrap t (ClassInstanceLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Kind (Target t) (Target t) (Wrap t) (Wrap t))
-> ClassInstanceLHS l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (ClassInstanceLHS l l d d)
-> s (Kind l l d d) -> ClassInstanceLHS λ l d s
AST.ClassInstanceLHSKindApplication (t
-> Wrap
t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (ClassInstanceLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (ClassInstanceLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
left) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
right)
instance (WrapTranslation t, WrappedTranslation t AST.Type,
FullyTranslatable t AST.Constructor, FullyTranslatable t AST.Context,
FullyTranslatable t AST.FieldDeclaration, FullyTranslatable t AST.Type,
DeeplyTranslatable t AST.TypeVarBinding,
Abstract.Constructor (Origin t) ~ AST.Constructor (Origin t),
Abstract.Constructor (Target t) ~ AST.Constructor (Target t),
Abstract.Context (Origin t) ~ AST.Context (Origin t),
Abstract.Context (Target t) ~ AST.Context (Target t),
Abstract.Type (Origin t) ~ AST.Type (Origin t),
Abstract.Type (Target t) ~ AST.Type (Target t),
Abstract.Kind (Origin t) ~ AST.Type (Origin t),
Abstract.Kind (Target t) ~ AST.Type (Target t),
Abstract.FieldDeclaration (Origin t) ~ AST.FieldDeclaration (Origin t),
Abstract.FieldDeclaration (Target t) ~ AST.FieldDeclaration (Target t),
Abstract.TypeVarBinding (Origin t) ~ AST.TypeVarBinding (Origin t),
Abstract.TypeVarBinding (Target t) ~ AST.TypeVarBinding (Target t)) =>
DeeplyTranslatable t AST.Type where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> Type l (Origin t) (Wrap t) (Wrap t)
-> Type l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.ConstructorType Wrap t (Constructor (Origin t) (Origin t) (Wrap t) (Wrap t))
con) = Wrap t (Constructor (Target t) (Target t) (Wrap t) (Wrap t))
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Constructor l l d d) -> Type λ l d s
AST.ConstructorType (t
-> Wrap t (Constructor (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Constructor (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Constructor (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Constructor (Origin t) (Origin t) (Wrap t) (Wrap t))
con)
translateDeeply t
_ Type l (Origin t) (Wrap t) (Wrap t)
AST.FunctionConstructorType = Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Type λ l d s
AST.FunctionConstructorType
translateDeeply t
t (AST.FunctionType Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
domain Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
codomain) =
Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d) -> s (Type l l d d) -> Type λ l d s
AST.FunctionType (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
domain) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
codomain)
translateDeeply t
t (AST.LinearFunctionType Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
domain Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
codomain) =
Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d) -> s (Type l l d d) -> Type λ l d s
AST.LinearFunctionType (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
domain) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
codomain)
translateDeeply t
t (AST.MultiplicityFunctionType Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
domain Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
multiplicity Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
codomain) =
Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d)
-> s (Type l l d d) -> s (Type l l d d) -> Type λ l d s
AST.MultiplicityFunctionType (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
domain) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
multiplicity) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
codomain)
translateDeeply t
t (AST.RecordFunctionType [Wrap t (FieldDeclaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
domain Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
codomain) =
[Wrap t (FieldDeclaration (Target t) (Target t) (Wrap t) (Wrap t))]
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[s (FieldDeclaration l l d d)] -> s (Type l l d d) -> Type λ l d s
AST.RecordFunctionType (t
-> Wrap
t (FieldDeclaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (FieldDeclaration (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (FieldDeclaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (FieldDeclaration (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (FieldDeclaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap
t (FieldDeclaration (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (FieldDeclaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (FieldDeclaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
domain) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
codomain)
translateDeeply t
t (AST.ListType Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
item) = Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d) -> Type λ l d s
AST.ListType (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
item)
translateDeeply t
t (AST.LazyType SupportFor 'StrictData l
support Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
body) = SupportFor 'StrictData l
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'StrictData λ -> s (Type l l d d) -> Type λ l d s
AST.LazyType SupportFor 'StrictData l
support (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
body)
translateDeeply t
t (AST.StrictType Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
body) = Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d) -> Type λ l d s
AST.StrictType (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
body)
translateDeeply t
t (AST.TupleType NonEmpty (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
items) = NonEmpty (Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
NonEmpty (s (Type l l d d)) -> Type λ l d s
AST.TupleType (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> NonEmpty (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> NonEmpty (Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> NonEmpty (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
NonEmpty (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
items)
translateDeeply t
t (AST.UnboxedTupleType SupportFor 'UnboxedTuples l
support NonEmpty (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
items) = SupportFor 'UnboxedTuples l
-> NonEmpty (Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'UnboxedTuples λ
-> NonEmpty (s (Type l l d d)) -> Type λ l d s
AST.UnboxedTupleType SupportFor 'UnboxedTuples l
support (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> NonEmpty (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> NonEmpty (Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> NonEmpty (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
NonEmpty (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
items)
translateDeeply t
t (AST.UnboxedSumType SupportFor 'UnboxedSums l
support NonEmpty (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
items) = SupportFor 'UnboxedSums l
-> NonEmpty (Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'UnboxedSums λ
-> NonEmpty (s (Type l l d d)) -> Type λ l d s
AST.UnboxedSumType SupportFor 'UnboxedSums l
support (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> NonEmpty (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> NonEmpty (Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> NonEmpty (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
NonEmpty (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t)))
items)
translateDeeply t
t (AST.TypeApplication Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
left Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
right) =
Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d) -> s (Type l l d d) -> Type λ l d s
AST.TypeApplication (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
left) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
right)
translateDeeply t
t (AST.InfixTypeApplication Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
left QualifiedName l
op Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
right) =
Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> QualifiedName l
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d)
-> QualifiedName λ -> s (Type l l d d) -> Type λ l d s
AST.InfixTypeApplication (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
left) QualifiedName l
op (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
right)
translateDeeply t
_ (AST.TypeVariable Name l
name) = Name l -> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Name λ -> Type λ l d s
AST.TypeVariable Name l
name
translateDeeply t
t (AST.ForallType [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
body) = [TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[TypeVarBinding λ l d s] -> s (Type l l d d) -> Type λ l d s
AST.ForallType (t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall l.
Functor (Wrap t) =>
t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind) l.
(DeeplyTranslatable t node, Functor (Wrap t)) =>
t
-> node l (Origin t) (Wrap t) (Wrap t)
-> node l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t))
-> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
-> [TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
body)
translateDeeply t
t (AST.ConstrainedType Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
body) =
Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Context l l d d) -> s (Type l l d d) -> Type λ l d s
AST.ConstrainedType (t
-> Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
body)
translateDeeply t
t (AST.ConstraintType Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context) = Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Context l l d d) -> Type λ l d s
AST.ConstraintType (t
-> Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Context (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Context (Origin t) (Origin t) (Wrap t) (Wrap t))
context)
translateDeeply t
t (AST.KindedType Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
body Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t))
kind) = Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Kind (Target t) (Target t) (Wrap t) (Wrap t))
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d) -> s (Kind l l d d) -> Type λ l d s
AST.KindedType (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
body) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
kind)
translateDeeply t
_ Type l (Origin t) (Wrap t) (Wrap t)
AST.TypeWildcard = Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Type λ l d s
AST.TypeWildcard
translateDeeply t
t (AST.TypeKind Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
body) = Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d) -> Type λ l d s
AST.TypeKind (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
body)
translateDeeply t
t (AST.VisibleDependentType [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
body) =
[TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[TypeVarBinding λ l d s] -> s (Type l l d d) -> Type λ l d s
AST.VisibleDependentType (t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall l.
Functor (Wrap t) =>
t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind) l.
(DeeplyTranslatable t node, Functor (Wrap t)) =>
t
-> node l (Origin t) (Wrap t) (Wrap t)
-> node l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t))
-> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
-> [TypeVarBinding l (Target t) (Wrap t) (Wrap t)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TypeVarBinding l (Origin t) (Wrap t) (Wrap t)]
vars) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
body)
translateDeeply t
_ Type l (Origin t) (Wrap t) (Wrap t)
AST.GroundTypeKind = Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Type λ l d s
AST.GroundTypeKind
translateDeeply t
t (AST.PromotedConstructorType Wrap t (Constructor (Origin t) (Origin t) (Wrap t) (Wrap t))
con) = Wrap t (Constructor (Target t) (Target t) (Wrap t) (Wrap t))
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Constructor l l d d) -> Type λ l d s
AST.PromotedConstructorType (t
-> Wrap t (Constructor (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Constructor (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Constructor (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Constructor (Origin t) (Origin t) (Wrap t) (Wrap t))
con)
translateDeeply t
t (AST.PromotedTupleType [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
items) = [Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))]
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[s (Type l l d d)] -> Type λ l d s
AST.PromotedTupleType (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
items)
translateDeeply t
t (AST.PromotedListType [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
items) = [Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))]
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[s (Type l l d d)] -> Type λ l d s
AST.PromotedListType (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
items)
translateDeeply t
_ (AST.PromotedIntegerLiteral Integer
n) = Integer -> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Integer -> Type λ l d s
AST.PromotedIntegerLiteral Integer
n
translateDeeply t
_ (AST.PromotedCharLiteral Char
c) = Char -> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Char -> Type λ l d s
AST.PromotedCharLiteral Char
c
translateDeeply t
_ (AST.PromotedStringLiteral Text
t) = Text -> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Text -> Type λ l d s
AST.PromotedStringLiteral Text
t
translateDeeply t
t (AST.PromotedInfixTypeApplication Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
left QualifiedName l
op Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
right) =
Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> QualifiedName l
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d)
-> QualifiedName λ -> s (Type l l d d) -> Type λ l d s
AST.PromotedInfixTypeApplication (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
left) QualifiedName l
op (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
right)
translateDeeply t
t (AST.VisibleKindApplication Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t))
kind) =
Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Kind (Target t) (Target t) (Wrap t) (Wrap t))
-> Type l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d) -> s (Kind l l d d) -> Type λ l d s
AST.VisibleKindApplication (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
kind)
instance (WrapTranslation t, FullyTranslatable t AST.Type,
Abstract.Kind (Origin t) ~ AST.Type (Origin t),
Abstract.Kind (Target t) ~ AST.Type (Target t)) =>
DeeplyTranslatable t AST.TypeVarBinding where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> TypeVarBinding l (Origin t) (Wrap t) (Wrap t)
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.ExplicitlyKindedTypeVariable Bool
inferred Name l
name Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t))
kind) =
Bool
-> Name l
-> Wrap t (Kind (Target t) (Target t) (Wrap t) (Wrap t))
-> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
Bool -> Name λ -> s (Kind l l d d) -> TypeVarBinding λ l d s
AST.ExplicitlyKindedTypeVariable Bool
inferred Name l
name (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Kind (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
kind)
translateDeeply t
_ (AST.ImplicitlyKindedTypeVariable Bool
inferred Name l
name) = Bool -> Name l -> TypeVarBinding l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
Bool -> Name λ -> TypeVarBinding λ l d s
AST.ImplicitlyKindedTypeVariable Bool
inferred Name l
name
instance (WrapTranslation t, WrappedTranslation t AST.EquationLHS, FullyTranslatable t AST.Pattern,
Abstract.EquationLHS (Origin t) ~ AST.EquationLHS (Origin t),
Abstract.EquationLHS (Target t) ~ AST.EquationLHS (Target t),
Abstract.Pattern (Origin t) ~ AST.Pattern (Origin t),
Abstract.Pattern (Target t) ~ AST.Pattern (Target t)) =>
DeeplyTranslatable t AST.EquationLHS where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> EquationLHS l (Origin t) (Wrap t) (Wrap t)
-> EquationLHS l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.PrefixLHS Wrap t (EquationLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
con NonEmpty (Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t)))
args) = Wrap t (EquationLHS (Target t) (Target t) (Wrap t) (Wrap t))
-> NonEmpty
(Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t)))
-> EquationLHS l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (EquationLHS l l d d)
-> NonEmpty (s (Pattern l l d d)) -> EquationLHS λ l d s
AST.PrefixLHS (t
-> Wrap t (EquationLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (EquationLHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (EquationLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (EquationLHS (Origin t) (Origin t) (Wrap t) (Wrap t))
con) (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> NonEmpty (Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t)))
NonEmpty (Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t)))
args)
translateDeeply t
t (AST.InfixLHS Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
left Name l
op Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
right) = Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
-> Name l
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
-> EquationLHS l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Pattern l l d d)
-> Name λ -> s (Pattern l l d d) -> EquationLHS λ l d s
AST.InfixLHS (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
left) Name l
op (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
right)
translateDeeply t
t (AST.PatternLHS Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
pat) = Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
-> EquationLHS l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Pattern l l d d) -> EquationLHS λ l d s
AST.PatternLHS (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
pat)
translateDeeply t
_ (AST.VariableLHS Name l
name) = Name l -> EquationLHS l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> EquationLHS λ l d s
AST.VariableLHS Name l
name
instance (WrapTranslation t, WrappedTranslation t AST.EquationRHS,
FullyTranslatable t AST.Expression, FullyTranslatable t AST.GuardedExpression,
Abstract.EquationRHS (Origin t) ~ AST.EquationRHS (Origin t),
Abstract.EquationRHS (Target t) ~ AST.EquationRHS (Target t),
Abstract.Expression (Origin t) ~ AST.Expression (Origin t),
Abstract.Expression (Target t) ~ AST.Expression (Target t),
Abstract.GuardedExpression (Origin t) ~ AST.GuardedExpression (Origin t),
Abstract.GuardedExpression (Target t) ~ AST.GuardedExpression (Target t)) =>
DeeplyTranslatable t AST.EquationRHS where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> EquationRHS l (Origin t) (Wrap t) (Wrap t)
-> EquationRHS l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.GuardedRHS NonEmpty
(Wrap
t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t)))
choices) = NonEmpty
(Wrap
t (GuardedExpression (Target t) (Target t) (Wrap t) (Wrap t)))
-> EquationRHS l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
NonEmpty (s (GuardedExpression l l d d)) -> EquationRHS λ l d s
AST.GuardedRHS (t
-> Wrap
t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (GuardedExpression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (GuardedExpression (Target t) (Target t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap
t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap
t (GuardedExpression (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> NonEmpty
(Wrap
t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t)))
NonEmpty
(Wrap
t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t)))
choices)
translateDeeply t
t (AST.NormalRHS Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
body) = Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> EquationRHS l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d) -> EquationRHS λ l d s
AST.NormalRHS (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
body)
instance (WrapTranslation t, WrappedTranslation t AST.Pattern,
FullyTranslatable t AST.Constructor, FullyTranslatable t AST.FieldPattern,
FullyTranslatable t AST.Type, FullyTranslatable t AST.Expression, FullyTranslatable t AST.Value,
Abstract.Pattern (Origin t) ~ AST.Pattern (Origin t),
Abstract.Pattern (Target t) ~ AST.Pattern (Target t),
Abstract.Constructor (Origin t) ~ AST.Constructor (Origin t),
Abstract.Constructor (Target t) ~ AST.Constructor (Target t),
Abstract.Expression (Origin t) ~ AST.Expression (Origin t),
Abstract.Expression (Target t) ~ AST.Expression (Target t),
Abstract.FieldPattern (Origin t) ~ AST.FieldPattern (Origin t),
Abstract.FieldPattern (Target t) ~ AST.FieldPattern (Target t),
Abstract.Type (Origin t) ~ AST.Type (Origin t),
Abstract.Kind (Origin t) ~ AST.Type (Origin t),
Abstract.Type (Target t) ~ AST.Type (Target t),
Abstract.Kind (Target t) ~ AST.Type (Target t),
Abstract.Value (Origin t) ~ AST.Value (Origin t),
Abstract.Value (Target t) ~ AST.Value (Target t)) =>
DeeplyTranslatable t AST.Pattern where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> Pattern l (Origin t) (Wrap t) (Wrap t)
-> Pattern l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.AsPattern Name l
name Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
body) = Name l
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
-> Pattern l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> s (Pattern l l d d) -> Pattern λ l d s
AST.AsPattern Name l
name (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
body)
translateDeeply t
t (AST.BangPattern SupportFor 'BangPatterns l
support Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
body) = SupportFor 'BangPatterns l
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
-> Pattern l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'BangPatterns λ
-> s (Pattern l l d d) -> Pattern λ l d s
AST.BangPattern SupportFor 'BangPatterns l
support (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
body)
translateDeeply t
t (AST.ViewPattern SupportFor 'ViewPatterns l
support Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
view Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
pattern) =
SupportFor 'ViewPatterns l
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
-> Pattern l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'ViewPatterns λ
-> s (Expression l l d d) -> s (Pattern l l d d) -> Pattern λ l d s
AST.ViewPattern SupportFor 'ViewPatterns l
support (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
view) (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
pattern)
translateDeeply t
_ (AST.NPlusKPattern SupportFor 'NPlusKPatterns l
support Name l
n Integer
k) = SupportFor 'NPlusKPatterns l
-> Name l -> Integer -> Pattern l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'NPlusKPatterns λ
-> Name λ -> Integer -> Pattern λ l d s
AST.NPlusKPattern SupportFor 'NPlusKPatterns l
support Name l
n Integer
k
translateDeeply t
t (AST.ConstructorPattern Wrap t (Constructor (Origin t) (Origin t) (Wrap t) (Wrap t))
con [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
types [Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
args) =
Wrap t (Constructor (Target t) (Target t) (Wrap t) (Wrap t))
-> [Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))]
-> [Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))]
-> Pattern l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Constructor l l d d)
-> [s (Type l l d d)] -> [s (Pattern l l d d)] -> Pattern λ l d s
AST.ConstructorPattern (t
-> Wrap t (Constructor (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Constructor (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Constructor (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Constructor (Origin t) (Origin t) (Wrap t) (Wrap t))
con) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))]
types) (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
args)
translateDeeply t
t (AST.InfixPattern Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
left QualifiedName l
con Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
right) =
Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
-> QualifiedName l
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
-> Pattern l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Pattern l l d d)
-> QualifiedName λ -> s (Pattern l l d d) -> Pattern λ l d s
AST.InfixPattern (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
left) QualifiedName l
con (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
right)
translateDeeply t
t (AST.IrrefutablePattern Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
body) = Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
-> Pattern l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Pattern l l d d) -> Pattern λ l d s
AST.IrrefutablePattern (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
body)
translateDeeply t
t (AST.LazyPattern SupportFor 'Strict l
support Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
body) = SupportFor 'Strict l
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
-> Pattern l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'Strict λ -> s (Pattern l l d d) -> Pattern λ l d s
AST.LazyPattern SupportFor 'Strict l
support (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
body)
translateDeeply t
t (AST.ListPattern [Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
items) = [Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))]
-> Pattern l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[s (Pattern l l d d)] -> Pattern λ l d s
AST.ListPattern (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
items)
translateDeeply t
t (AST.LiteralPattern Wrap t (Value (Origin t) (Origin t) (Wrap t) (Wrap t))
value) = Wrap t (Value (Target t) (Target t) (Wrap t) (Wrap t))
-> Pattern l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Value l l d d) -> Pattern λ l d s
AST.LiteralPattern (t
-> Wrap t (Value (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Value (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Value (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Value (Origin t) (Origin t) (Wrap t) (Wrap t))
value)
translateDeeply t
t (AST.RecordPattern QualifiedName l
con [Wrap t (FieldPattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
fields) = QualifiedName l
-> [Wrap t (FieldPattern (Target t) (Target t) (Wrap t) (Wrap t))]
-> Pattern l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> [s (FieldPattern l l d d)] -> Pattern λ l d s
AST.RecordPattern QualifiedName l
con (t
-> Wrap t (FieldPattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (FieldPattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (FieldPattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (FieldPattern (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (FieldPattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (FieldPattern (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (FieldPattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (FieldPattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
fields)
translateDeeply t
t (AST.WildcardRecordPattern SupportFor 'RecordWildCards l
support QualifiedName l
con [Wrap t (FieldPattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
fields) =
SupportFor 'RecordWildCards l
-> QualifiedName l
-> [Wrap t (FieldPattern (Target t) (Target t) (Wrap t) (Wrap t))]
-> Pattern l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'RecordWildCards λ
-> QualifiedName λ -> [s (FieldPattern l l d d)] -> Pattern λ l d s
AST.WildcardRecordPattern SupportFor 'RecordWildCards l
support QualifiedName l
con (t
-> Wrap t (FieldPattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (FieldPattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (FieldPattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (FieldPattern (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (FieldPattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (FieldPattern (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (FieldPattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (FieldPattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
fields)
translateDeeply t
t (AST.TuplePattern NonEmpty (Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t)))
items) = NonEmpty (Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t)))
-> Pattern l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
NonEmpty (s (Pattern l l d d)) -> Pattern λ l d s
AST.TuplePattern (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> NonEmpty (Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t)))
NonEmpty (Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t)))
items)
translateDeeply t
t (AST.UnboxedTuplePattern SupportFor 'UnboxedTuples l
support NonEmpty (Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t)))
items) =
SupportFor 'UnboxedTuples l
-> NonEmpty
(Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t)))
-> Pattern l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'UnboxedTuples λ
-> NonEmpty (s (Pattern l l d d)) -> Pattern λ l d s
AST.UnboxedTuplePattern SupportFor 'UnboxedTuples l
support (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> NonEmpty (Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t)))
NonEmpty (Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t)))
items)
translateDeeply t
t (AST.UnboxedSumPattern SupportFor 'UnboxedSums l
support Int
before Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
branch Int
after) =
SupportFor 'UnboxedSums l
-> Int
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
-> Int
-> Pattern l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'UnboxedSums λ
-> Int -> s (Pattern l l d d) -> Int -> Pattern λ l d s
AST.UnboxedSumPattern SupportFor 'UnboxedSums l
support Int
before (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
branch) Int
after
translateDeeply t
t (AST.TypedPattern Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
p Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty) = Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Pattern l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Pattern l l d d) -> s (Type l l d d) -> Pattern λ l d s
AST.TypedPattern (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
p) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty)
translateDeeply t
t (AST.InvisibleTypePattern SupportFor 'TypeAbstractions l
support Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty) = SupportFor 'TypeAbstractions l
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Pattern l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'TypeAbstractions λ
-> s (Type l l d d) -> Pattern λ l d s
AST.InvisibleTypePattern SupportFor 'TypeAbstractions l
support (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty)
translateDeeply t
t (AST.ExplicitTypePattern SupportFor 'ExplicitNamespaces l
support Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty) = SupportFor 'ExplicitNamespaces l
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Pattern l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'ExplicitNamespaces λ
-> s (Type l l d d) -> Pattern λ l d s
AST.ExplicitTypePattern SupportFor 'ExplicitNamespaces l
support (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty)
translateDeeply t
_ (AST.VariablePattern Name l
name) = Name l -> Pattern l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Name λ -> Pattern λ l d s
AST.VariablePattern Name l
name
translateDeeply t
_ Pattern l (Origin t) (Wrap t) (Wrap t)
AST.WildcardPattern = Pattern l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Pattern λ l d s
AST.WildcardPattern
instance (WrapTranslation t, WrappedTranslation t AST.Expression,
FullyTranslatable t AST.CaseAlternative, FullyTranslatable t AST.LambdaCasesAlternative,
FullyTranslatable t AST.Constructor,
FullyTranslatable t AST.Declaration, FullyTranslatable t AST.FieldBinding,
FullyTranslatable t AST.GuardedExpression, FullyTranslatable t AST.Pattern,
FullyTranslatable t AST.Statement, FullyTranslatable t AST.Type, FullyTranslatable t AST.Value,
Abstract.Expression (Origin t) ~ AST.Expression (Origin t),
Abstract.Expression (Target t) ~ AST.Expression (Target t),
Abstract.CaseAlternative (Origin t) ~ AST.CaseAlternative (Origin t),
Abstract.CaseAlternative (Target t) ~ AST.CaseAlternative (Target t),
Abstract.LambdaCasesAlternative (Origin t) ~ AST.LambdaCasesAlternative (Origin t),
Abstract.LambdaCasesAlternative (Target t) ~ AST.LambdaCasesAlternative (Target t),
Abstract.Constructor (Origin t) ~ AST.Constructor (Origin t),
Abstract.Constructor (Target t) ~ AST.Constructor (Target t),
Abstract.Declaration (Origin t) ~ AST.Declaration (Origin t),
Abstract.Declaration (Target t) ~ AST.Declaration (Target t),
Abstract.FieldBinding (Origin t) ~ AST.FieldBinding (Origin t),
Abstract.FieldBinding (Target t) ~ AST.FieldBinding (Target t),
Abstract.GuardedExpression (Origin t) ~ AST.GuardedExpression (Origin t),
Abstract.GuardedExpression (Target t) ~ AST.GuardedExpression (Target t),
Abstract.Pattern (Origin t) ~ AST.Pattern (Origin t),
Abstract.Pattern (Target t) ~ AST.Pattern (Target t),
Abstract.Statement (Origin t) ~ AST.Statement (Origin t),
Abstract.Statement (Target t) ~ AST.Statement (Target t),
Abstract.Type (Origin t) ~ AST.Type (Origin t), Abstract.Type (Target t) ~ AST.Type (Target t),
Abstract.Value (Origin t) ~ AST.Value (Origin t), Abstract.Value (Target t) ~ AST.Value (Target t)) =>
DeeplyTranslatable t AST.Expression where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> Expression l (Origin t) (Wrap t) (Wrap t)
-> Expression l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.ApplyExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
f Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
x) = Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> s (Expression l l d d) -> Expression λ l d s
AST.ApplyExpression (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
f) (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
x)
translateDeeply t
t (AST.ConditionalExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
cond Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
true Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
false) =
Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> s (Expression l l d d)
-> s (Expression l l d d)
-> Expression λ l d s
AST.ConditionalExpression (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
cond) (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
true) (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
false)
translateDeeply t
t (AST.ConstructorExpression Wrap t (Constructor (Origin t) (Origin t) (Wrap t) (Wrap t))
con) = Wrap t (Constructor (Target t) (Target t) (Wrap t) (Wrap t))
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Constructor l l d d) -> Expression λ l d s
AST.ConstructorExpression (t
-> Wrap t (Constructor (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Constructor (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Constructor (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Constructor (Origin t) (Origin t) (Wrap t) (Wrap t))
con)
translateDeeply t
t (AST.CaseExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
scrutinee [Wrap t (CaseAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))]
alts) =
Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> [Wrap
t (CaseAlternative (Target t) (Target t) (Wrap t) (Wrap t))]
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> [s (CaseAlternative l l d d)] -> Expression λ l d s
AST.CaseExpression (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
scrutinee) (t
-> Wrap t (CaseAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (CaseAlternative (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (CaseAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (CaseAlternative (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (CaseAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap
t (CaseAlternative (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (CaseAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (CaseAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))]
alts)
translateDeeply t
t (AST.LambdaCaseExpression SupportFor 'LambdaCase l
sup [Wrap t (CaseAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))]
alts) = SupportFor 'LambdaCase l
-> [Wrap
t (CaseAlternative (Target t) (Target t) (Wrap t) (Wrap t))]
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'LambdaCase λ
-> [s (CaseAlternative l l d d)] -> Expression λ l d s
AST.LambdaCaseExpression SupportFor 'LambdaCase l
sup (t
-> Wrap t (CaseAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (CaseAlternative (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (CaseAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (CaseAlternative (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (CaseAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap
t (CaseAlternative (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (CaseAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (CaseAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))]
alts)
translateDeeply t
t (AST.LambdaCasesExpression SupportFor 'LambdaCase l
sup [Wrap
t (LambdaCasesAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))]
alts) = SupportFor 'LambdaCase l
-> [Wrap
t (LambdaCasesAlternative (Target t) (Target t) (Wrap t) (Wrap t))]
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'LambdaCase λ
-> [s (LambdaCasesAlternative l l d d)] -> Expression λ l d s
AST.LambdaCasesExpression SupportFor 'LambdaCase l
sup (t
-> Wrap
t (LambdaCasesAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (LambdaCasesAlternative (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap
t (LambdaCasesAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (LambdaCasesAlternative (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (LambdaCasesAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap
t (LambdaCasesAlternative (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap
t (LambdaCasesAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap
t (LambdaCasesAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))]
alts)
translateDeeply t
t (AST.MultiWayIfExpression [Wrap
t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))]
alts) = [Wrap
t (GuardedExpression (Target t) (Target t) (Wrap t) (Wrap t))]
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[s (GuardedExpression l l d d)] -> Expression λ l d s
AST.MultiWayIfExpression (t
-> Wrap
t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (GuardedExpression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (GuardedExpression (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap
t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap
t (GuardedExpression (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap
t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap
t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))]
alts)
translateDeeply t
t (AST.DoExpression Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
body) = Wrap t (GuardedExpression (Target t) (Target t) (Wrap t) (Wrap t))
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (GuardedExpression l l d d) -> Expression λ l d s
AST.DoExpression (t
-> Wrap
t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (GuardedExpression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
body)
translateDeeply t
t (AST.MDoExpression Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
body) = Wrap t (GuardedExpression (Target t) (Target t) (Wrap t) (Wrap t))
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (GuardedExpression l l d d) -> Expression λ l d s
AST.MDoExpression (t
-> Wrap
t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (GuardedExpression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
body)
translateDeeply t
t (AST.QualifiedDoExpression SupportFor 'QualifiedDo l
sup ModuleName l
m Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
body) =
SupportFor 'QualifiedDo l
-> ModuleName l
-> Wrap
t (GuardedExpression (Target t) (Target t) (Wrap t) (Wrap t))
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'QualifiedDo λ
-> ModuleName λ
-> s (GuardedExpression l l d d)
-> Expression λ l d s
AST.QualifiedDoExpression SupportFor 'QualifiedDo l
sup ModuleName l
m (t
-> Wrap
t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (GuardedExpression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
body)
translateDeeply t
t (AST.MDoQualifiedExpression SupportFor 'QualifiedDo l
sup1 SupportFor 'RecursiveDo l
sup2 ModuleName l
m Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
body) =
SupportFor 'QualifiedDo l
-> SupportFor 'RecursiveDo l
-> ModuleName l
-> Wrap
t (GuardedExpression (Target t) (Target t) (Wrap t) (Wrap t))
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'QualifiedDo λ
-> SupportFor 'RecursiveDo λ
-> ModuleName λ
-> s (GuardedExpression l l d d)
-> Expression λ l d s
AST.MDoQualifiedExpression SupportFor 'QualifiedDo l
sup1 SupportFor 'RecursiveDo l
sup2 ModuleName l
m (t
-> Wrap
t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap
t (GuardedExpression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
body)
translateDeeply t
t (AST.InfixExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
left Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
op Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
right) =
Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> s (Expression l l d d)
-> s (Expression l l d d)
-> Expression λ l d s
AST.InfixExpression (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
left) (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
op) (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
right)
translateDeeply t
t (AST.LeftSectionExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
left QualifiedName l
op) = Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> QualifiedName l -> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d) -> QualifiedName λ -> Expression λ l d s
AST.LeftSectionExpression (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
left) QualifiedName l
op
translateDeeply t
t (AST.LambdaExpression [Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
patterns Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
body) =
[Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))]
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[s (Pattern l l d d)]
-> s (Expression l l d d) -> Expression λ l d s
AST.LambdaExpression (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
patterns) (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
body)
translateDeeply t
t (AST.LetExpression [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
bindings Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
body) =
[Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[s (Declaration l l d d)]
-> s (Expression l l d d) -> Expression λ l d s
AST.LetExpression (t
-> Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
bindings) (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
body)
translateDeeply t
t (AST.ListComprehension Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
element NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
guards) =
Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> NonEmpty
(Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t)))
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> NonEmpty (s (Statement l l d d)) -> Expression λ l d s
AST.ListComprehension (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
element) (t
-> Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
guards)
translateDeeply t
t (AST.ParallelListComprehension Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
element NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
guards1 NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
guards2 [NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))]
guardses) =
Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> NonEmpty
(Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t)))
-> [NonEmpty
(Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t)))]
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> NonEmpty (s (Statement l l d d))
-> NonEmpty (s (Statement l l d d))
-> [NonEmpty (s (Statement l l d d))]
-> Expression λ l d s
AST.ParallelListComprehension
(t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
element) (t
-> Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
guards1)
(t
-> Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
guards2) ((t
-> Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>) (NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t))))
-> [NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))]
-> [NonEmpty
(Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t)))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))]
[NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))]
guardses)
translateDeeply t
t (AST.ListExpression [Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))]
items) = [Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))]
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[s (Expression l l d d)] -> Expression λ l d s
AST.ListExpression (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))]
items)
translateDeeply t
t (AST.LiteralExpression Wrap t (Value (Origin t) (Origin t) (Wrap t) (Wrap t))
value) = Wrap t (Value (Target t) (Target t) (Wrap t) (Wrap t))
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Value l l d d) -> Expression λ l d s
AST.LiteralExpression (t
-> Wrap t (Value (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Value (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Value (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Value (Origin t) (Origin t) (Wrap t) (Wrap t))
value)
translateDeeply t
_ Expression l (Origin t) (Wrap t) (Wrap t)
AST.Negate = Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Expression λ l d s
AST.Negate
translateDeeply t
t (AST.RecordExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
record [Wrap t (FieldBinding (Origin t) (Origin t) (Wrap t) (Wrap t))]
fields) =
Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> [Wrap t (FieldBinding (Target t) (Target t) (Wrap t) (Wrap t))]
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> [s (FieldBinding l l d d)] -> Expression λ l d s
AST.RecordExpression (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
record) (t
-> Wrap t (FieldBinding (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (FieldBinding (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (FieldBinding (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (FieldBinding (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (FieldBinding (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (FieldBinding (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (FieldBinding (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (FieldBinding (Origin t) (Origin t) (Wrap t) (Wrap t))]
fields)
translateDeeply t
_ (AST.ReferenceExpression QualifiedName l
name) = QualifiedName l -> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> Expression λ l d s
AST.ReferenceExpression QualifiedName l
name
translateDeeply t
t (AST.RightSectionExpression QualifiedName l
op Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
right) = QualifiedName l
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> s (Expression l l d d) -> Expression λ l d s
AST.RightSectionExpression QualifiedName l
op (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
right)
translateDeeply t
t (AST.SequenceExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
start Maybe (Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
next Maybe (Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
end) =
Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> Maybe
(Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t)))
-> Maybe
(Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t)))
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> Maybe (s (Expression l l d d))
-> Maybe (s (Expression l l d d))
-> Expression λ l d s
AST.SequenceExpression (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
start) (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t)))
-> Maybe
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Maybe
(Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
Maybe (Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
next) (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t)))
-> Maybe
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Maybe
(Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
Maybe (Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
end)
translateDeeply t
t (AST.TupleExpression NonEmpty
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
items) = NonEmpty
(Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t)))
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
NonEmpty (s (Expression l l d d)) -> Expression λ l d s
AST.TupleExpression (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> NonEmpty
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
NonEmpty
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
items)
translateDeeply t
t (AST.TupleSectionExpression NonEmpty
(Maybe
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))))
items) =
NonEmpty
(Maybe
(Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))))
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
NonEmpty (Maybe (s (Expression l l d d))) -> Expression λ l d s
AST.TupleSectionExpression ((t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t)))
-> Maybe
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Maybe
(Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>) (Maybe
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Maybe
(Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))))
-> NonEmpty
(Maybe
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))))
-> NonEmpty
(Maybe
(Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> NonEmpty
(Maybe
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))))
NonEmpty
(Maybe
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))))
items)
translateDeeply t
t (AST.UnboxedTupleExpression SupportFor 'UnboxedTuples l
support NonEmpty
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
items) =
SupportFor 'UnboxedTuples l
-> NonEmpty
(Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t)))
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'UnboxedTuples λ
-> NonEmpty (s (Expression l l d d)) -> Expression λ l d s
AST.UnboxedTupleExpression SupportFor 'UnboxedTuples l
support (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> NonEmpty
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
NonEmpty
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
items)
translateDeeply t
t (AST.UnboxedTupleSectionExpression SupportFor 'UnboxedTuples l
support NonEmpty
(Maybe
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))))
items) =
SupportFor 'UnboxedTuples l
-> NonEmpty
(Maybe
(Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))))
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'UnboxedTuples λ
-> NonEmpty (Maybe (s (Expression l l d d))) -> Expression λ l d s
AST.UnboxedTupleSectionExpression SupportFor 'UnboxedTuples l
support ((t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t)))
-> Maybe
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Maybe
(Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>) (Maybe
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Maybe
(Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))))
-> NonEmpty
(Maybe
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))))
-> NonEmpty
(Maybe
(Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> NonEmpty
(Maybe
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))))
NonEmpty
(Maybe
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))))
items)
translateDeeply t
t (AST.UnboxedSumExpression SupportFor 'UnboxedSums l
support Int
before Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
branch Int
after) =
SupportFor 'UnboxedSums l
-> Int
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> Int
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'UnboxedSums λ
-> Int -> s (Expression l l d d) -> Int -> Expression λ l d s
AST.UnboxedSumExpression SupportFor 'UnboxedSums l
support Int
before (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
branch) Int
after
translateDeeply t
t (AST.TypedExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
x Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
signature) =
Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d) -> s (Type l l d d) -> Expression λ l d s
AST.TypedExpression (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
x) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
signature)
translateDeeply t
t (AST.VisibleTypeApplication Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
x Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty) =
Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d) -> s (Type l l d d) -> Expression λ l d s
AST.VisibleTypeApplication (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
x) (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty)
translateDeeply t
t (AST.ExplicitTypeExpression SupportFor 'ExplicitNamespaces l
sup Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty) =
SupportFor 'ExplicitNamespaces l
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'ExplicitNamespaces λ
-> s (Type l l d d) -> Expression λ l d s
AST.ExplicitTypeExpression SupportFor 'ExplicitNamespaces l
sup (t
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty)
translateDeeply t
_ (AST.OverloadedLabel Text
l) = Text -> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Text -> Expression λ l d s
AST.OverloadedLabel Text
l
translateDeeply t
_ (AST.ImplicitParameterExpression SupportFor 'ImplicitParameters l
sup Name l
name) = SupportFor 'ImplicitParameters l
-> Name l -> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'ImplicitParameters λ -> Name λ -> Expression λ l d s
AST.ImplicitParameterExpression SupportFor 'ImplicitParameters l
sup Name l
name
translateDeeply t
t (AST.GetField Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
record Name l
name) = Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> Name l -> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d) -> Name λ -> Expression λ l d s
AST.GetField (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
record) Name l
name
translateDeeply t
_ (AST.FieldProjection NonEmpty (Name l)
fields) = NonEmpty (Name l) -> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
NonEmpty (Name λ) -> Expression λ l d s
AST.FieldProjection NonEmpty (Name l)
fields
translateDeeply t
t (AST.WildcardRecordExpression SupportFor 'RecordWildCards l
sup QualifiedName l
con [Wrap t (FieldBinding (Origin t) (Origin t) (Wrap t) (Wrap t))]
fields) =
SupportFor 'RecordWildCards l
-> QualifiedName l
-> [Wrap t (FieldBinding (Target t) (Target t) (Wrap t) (Wrap t))]
-> Expression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'RecordWildCards λ
-> QualifiedName λ
-> [s (FieldBinding l l d d)]
-> Expression λ l d s
AST.WildcardRecordExpression SupportFor 'RecordWildCards l
sup QualifiedName l
con (t
-> Wrap t (FieldBinding (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (FieldBinding (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (FieldBinding (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (FieldBinding (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (FieldBinding (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (FieldBinding (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (FieldBinding (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (FieldBinding (Origin t) (Origin t) (Wrap t) (Wrap t))]
fields)
instance (WrapTranslation t,
FullyTranslatable t AST.Pattern, FullyTranslatable t AST.EquationRHS,
Abstract.Pattern (Origin t) ~ AST.Pattern (Origin t),
Abstract.Pattern (Target t) ~ AST.Pattern (Target t),
Abstract.EquationRHS (Origin t) ~ AST.EquationRHS (Origin t),
Abstract.EquationRHS (Target t) ~ AST.EquationRHS (Target t)) =>
DeeplyTranslatable t AST.LambdaCasesAlternative where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> LambdaCasesAlternative l (Origin t) (Wrap t) (Wrap t)
-> LambdaCasesAlternative l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.LambdaCasesAlternative SupportFor 'LambdaCase l
sup [Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
lhs Wrap t (EquationRHS (Origin t) (Origin t) (Wrap t) (Wrap t))
rhs) =
SupportFor 'LambdaCase l
-> [Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))]
-> Wrap t (EquationRHS (Target t) (Target t) (Wrap t) (Wrap t))
-> LambdaCasesAlternative l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'LambdaCase λ
-> [s (Pattern l l d d)]
-> s (EquationRHS l l d d)
-> LambdaCasesAlternative λ l d s
AST.LambdaCasesAlternative SupportFor 'LambdaCase l
sup (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
lhs) (t
-> Wrap t (EquationRHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (EquationRHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (EquationRHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (EquationRHS (Origin t) (Origin t) (Wrap t) (Wrap t))
rhs)
instance (WrapTranslation t,
FullyTranslatable t AST.Expression, FullyTranslatable t AST.Statement,
Abstract.GuardedExpression (Origin t) ~ AST.GuardedExpression (Origin t),
Abstract.GuardedExpression (Target t) ~ AST.GuardedExpression (Target t),
Abstract.Expression (Origin t) ~ AST.Expression (Origin t),
Abstract.Expression (Target t) ~ AST.Expression (Target t),
Abstract.Statement (Origin t) ~ AST.Statement (Origin t),
Abstract.Statement (Target t) ~ AST.Statement (Target t)) =>
DeeplyTranslatable t AST.GuardedExpression where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> GuardedExpression l (Origin t) (Wrap t) (Wrap t)
-> GuardedExpression l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.GuardedExpression [Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t))]
guards Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
result) =
[Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t))]
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> GuardedExpression l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[s (Statement l l d d)]
-> s (Expression l l d d) -> GuardedExpression λ l d s
AST.GuardedExpression (t
-> Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t))]
guards) (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
result)
instance (WrapTranslation t, WrappedTranslation t AST.Statement,
FullyTranslatable t AST.Declaration, FullyTranslatable t AST.Expression, FullyTranslatable t AST.Pattern,
Abstract.Expression (Origin t) ~ AST.Expression (Origin t),
Abstract.Expression (Target t) ~ AST.Expression (Target t),
Abstract.Declaration (Origin t) ~ AST.Declaration (Origin t),
Abstract.Declaration (Target t) ~ AST.Declaration (Target t),
Abstract.Pattern (Origin t) ~ AST.Pattern (Origin t),
Abstract.Pattern (Target t) ~ AST.Pattern (Target t),
Abstract.Statement (Origin t) ~ AST.Statement (Origin t),
Abstract.Statement (Target t) ~ AST.Statement (Target t)) =>
DeeplyTranslatable t AST.Statement where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> Statement l (Origin t) (Wrap t) (Wrap t)
-> Statement l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.BindStatement Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
pat Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
value) = Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> Statement l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Pattern l l d d) -> s (Expression l l d d) -> Statement λ l d s
AST.BindStatement (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
pat) (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
value)
translateDeeply t
t (AST.ExpressionStatement Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
body) = Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
-> Statement l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d) -> Statement λ l d s
AST.ExpressionStatement (t
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
body)
translateDeeply t
t (AST.LetStatement [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
bindings) = [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
-> Statement l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[s (Declaration l l d d)] -> Statement λ l d s
AST.LetStatement (t
-> Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
bindings)
translateDeeply t
t (AST.RecursiveStatement [Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t))]
statements) = [Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t))]
-> Statement l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[s (Statement l l d d)] -> Statement λ l d s
AST.RecursiveStatement (t
-> Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Statement (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t))]
statements)
instance (WrapTranslation t,
FullyTranslatable t AST.Declaration, FullyTranslatable t AST.EquationRHS, FullyTranslatable t AST.Pattern,
Abstract.CaseAlternative (Origin t) ~ AST.CaseAlternative (Origin t),
Abstract.CaseAlternative (Target t) ~ AST.CaseAlternative (Target t),
Abstract.Declaration (Origin t) ~ AST.Declaration (Origin t),
Abstract.Declaration (Target t) ~ AST.Declaration (Target t),
Abstract.EquationRHS (Origin t) ~ AST.EquationRHS (Origin t),
Abstract.EquationRHS (Target t) ~ AST.EquationRHS (Target t),
Abstract.Pattern (Origin t) ~ AST.Pattern (Origin t),
Abstract.Pattern (Target t) ~ AST.Pattern (Target t)) =>
DeeplyTranslatable t AST.CaseAlternative where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> CaseAlternative l (Origin t) (Wrap t) (Wrap t)
-> CaseAlternative l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t (AST.CaseAlternative Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs Wrap t (EquationRHS (Origin t) (Origin t) (Wrap t) (Wrap t))
rhs [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
wheres) =
Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
-> Wrap t (EquationRHS (Target t) (Target t) (Wrap t) (Wrap t))
-> [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
-> CaseAlternative l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Pattern l l d d)
-> s (EquationRHS l l d d)
-> [s (Declaration l l d d)]
-> CaseAlternative λ l d s
AST.CaseAlternative (t
-> Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Pattern (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))
lhs) (t
-> Wrap t (EquationRHS (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (EquationRHS (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t Wrap t (EquationRHS (Origin t) (Origin t) (Wrap t) (Wrap t))
Wrap t (EquationRHS (Origin t) (Origin t) (Wrap t) (Wrap t))
rhs) (t
-> Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))
forall t (node :: TreeNodeKind).
(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))
translateFully t
t (Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t)))
-> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Declaration (Target t) (Target t) (Wrap t) (Wrap t))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
[Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
wheres)
instance WrapTranslation t => DeeplyTranslatable t AST.Value where
translateDeeply :: forall l.
Functor (Wrap t) =>
t
-> Value l (Origin t) (Wrap t) (Wrap t)
-> Value l (Target t) (Wrap t) (Wrap t)
translateDeeply t
_ (AST.CharLiteral Char
l) = Char -> Value l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Char -> Value λ l d s
AST.CharLiteral Char
l
translateDeeply t
_ (AST.FloatingLiteral Rational
l) = Rational -> Value l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Rational -> Value λ l d s
AST.FloatingLiteral Rational
l
translateDeeply t
_ (AST.IntegerLiteral Integer
l) = Integer -> Value l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Integer -> Value λ l d s
AST.IntegerLiteral Integer
l
translateDeeply t
_ (AST.StringLiteral Text
l) = Text -> Value l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Text -> Value λ l d s
AST.StringLiteral Text
l
translateDeeply t
t (AST.HashLiteral SupportFor 'MagicHash l
sup Value l (Origin t) (Wrap t) (Wrap t)
l) = SupportFor 'MagicHash l
-> Value l (Target t) (Wrap t) (Wrap t)
-> Value l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'MagicHash λ -> Value λ l d s -> Value λ l d s
AST.HashLiteral SupportFor 'MagicHash l
sup (t
-> Value l (Origin t) (Wrap t) (Wrap t)
-> Value l (Target t) (Wrap t) (Wrap t)
forall l.
Functor (Wrap t) =>
t
-> Value l (Origin t) (Wrap t) (Wrap t)
-> Value l (Target t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind) l.
(DeeplyTranslatable t node, Functor (Wrap t)) =>
t
-> node l (Origin t) (Wrap t) (Wrap t)
-> node l (Target t) (Wrap t) (Wrap t)
translateDeeply t
t Value l (Origin t) (Wrap t) (Wrap t)
l)
translateDeeply t
_ (AST.ExtendedLiteral SupportFor 'ExtendedLiterals l
sup Integer
n Name l
ty) = SupportFor 'ExtendedLiterals l
-> Integer -> Name l -> Value l (Target t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'ExtendedLiterals λ
-> Integer -> Name λ -> Value λ l d s
AST.ExtendedLiteral SupportFor 'ExtendedLiterals l
sup Integer
n Name l
ty
instance {-# overlappable #-} (NameTranslation t, WrapTranslation t, Functor (Wrap t), Translation t node) =>
WrappedTranslation t node where
translateWrapped :: t
-> Wrap t (node (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (node (Target t) (Origin t) (Wrap t) (Wrap t))
translateWrapped = (node (Origin t) (Origin t) (Wrap t) (Wrap t)
-> node (Target t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (node (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (node (Target t) (Origin t) (Wrap t) (Wrap t))
forall a b. (a -> b) -> Wrap t a -> Wrap t b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((node (Origin t) (Origin t) (Wrap t) (Wrap t)
-> node (Target t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (node (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (node (Target t) (Origin t) (Wrap t) (Wrap t)))
-> (t
-> node (Origin t) (Origin t) (Wrap t) (Wrap t)
-> node (Target t) (Origin t) (Wrap t) (Wrap t))
-> t
-> Wrap t (node (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (node (Target t) (Origin t) (Wrap t) (Wrap t))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. t
-> node (Origin t) (Origin t) (Wrap t) (Wrap t)
-> node (Target t) (Origin t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind).
Translation t node =>
t
-> node (Origin t) (Origin t) (Wrap t) (Wrap t)
-> node (Target t) (Origin t) (Wrap t) (Wrap t)
translate
instance {-# overlappable #-} (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 where
translate :: t
-> node (Origin t) (Origin t) (Wrap t) (Wrap t)
-> node (Target t) (Origin t) (Wrap t) (Wrap t)
translate = (node (Origin t) (Origin t) (Wrap t) (Wrap t)
-> node (Target t) (Origin t) (Wrap t) (Wrap t))
-> t
-> node (Origin t) (Origin t) (Wrap t) (Wrap t)
-> node (Target t) (Origin t) (Wrap t) (Wrap t)
forall a b. a -> b -> a
const node (Origin t) (Origin t) (Wrap t) (Wrap t)
-> node (Target t) (Origin t) (Wrap t) (Wrap t)
forall a b. Coercible a b => a -> b
coerce
instance {-# overlappable #-} (NameTranslation t, WrapTranslation t, Functor (Wrap t)) =>
Translation t AST.Module where
translate :: t
-> Module (Origin t) (Origin t) (Wrap t) (Wrap t)
-> Module (Target t) (Origin t) (Wrap t) (Wrap t)
translate t
t (AST.NamedModule ModuleName (Origin t)
modName Maybe [Wrap t (Export (Origin t) (Origin t) (Wrap t) (Wrap t))]
exports [Wrap t (Import (Origin t) (Origin t) (Wrap t) (Wrap t))]
imports [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
declarations) =
ModuleName (Target t)
-> Maybe [Wrap t (Export (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Import (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> Module (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
ModuleName λ
-> Maybe [s (Export l l d d)]
-> [s (Import l l d d)]
-> [s (Declaration l l d d)]
-> Module λ l d s
AST.NamedModule (t -> ModuleName (Origin t) -> ModuleName (Target t)
forall t.
NameTranslation t =>
t -> ModuleName (Origin t) -> ModuleName (Target t)
translateModuleName t
t ModuleName (Origin t)
modName) Maybe [Wrap t (Export (Origin t) (Origin t) (Wrap t) (Wrap t))]
exports [Wrap t (Import (Origin t) (Origin t) (Wrap t) (Wrap t))]
imports [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
declarations
translate t
_ (AST.AnonymousModule [Wrap t (Import (Origin t) (Origin t) (Wrap t) (Wrap t))]
imports [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
declarations) = [Wrap t (Import (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> Module (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[s (Import l l d d)] -> [s (Declaration l l d d)] -> Module λ l d s
AST.AnonymousModule [Wrap t (Import (Origin t) (Origin t) (Wrap t) (Wrap t))]
imports [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
declarations
translate t
_ (AST.ExtendedModule [ExtensionSwitch]
extensions Wrap t (Module (Origin t) (Origin t) (Wrap t) (Wrap t))
m) = [ExtensionSwitch]
-> Wrap t (Module (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Module (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[ExtensionSwitch] -> s (Module l l d d) -> Module λ l d s
AST.ExtendedModule [ExtensionSwitch]
extensions Wrap t (Module (Origin t) (Origin t) (Wrap t) (Wrap t))
m
instance {-# overlappable #-} (NameTranslation t, WrapTranslation t, Functor (Wrap t)) =>
Translation t AST.Import where
translate :: t
-> Import (Origin t) (Origin t) (Wrap t) (Wrap t)
-> Import (Target t) (Origin t) (Wrap t) (Wrap t)
translate t
t (AST.Import Bool
safe Bool
qualified Maybe Text
package ModuleName (Origin t)
name Maybe (ModuleName (Origin t))
alias Maybe
(Wrap
t (ImportSpecification (Origin t) (Origin t) (Wrap t) (Wrap t)))
detail) =
Bool
-> Bool
-> Maybe Text
-> ModuleName (Target t)
-> Maybe (ModuleName (Target t))
-> Maybe
(Wrap
t (ImportSpecification (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Import (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
Bool
-> Bool
-> Maybe Text
-> ModuleName λ
-> Maybe (ModuleName λ)
-> Maybe (s (ImportSpecification l l d d))
-> Import λ l d s
AST.Import Bool
safe Bool
qualified Maybe Text
package (t -> ModuleName (Origin t) -> ModuleName (Target t)
forall t.
NameTranslation t =>
t -> ModuleName (Origin t) -> ModuleName (Target t)
translateModuleName t
t ModuleName (Origin t)
name) (t -> ModuleName (Origin t) -> ModuleName (Target t)
forall t.
NameTranslation t =>
t -> ModuleName (Origin t) -> ModuleName (Target t)
translateModuleName t
t (ModuleName (Origin t) -> ModuleName (Target t))
-> Maybe (ModuleName (Origin t)) -> Maybe (ModuleName (Target t))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (ModuleName (Origin t))
alias) Maybe
(Wrap
t (ImportSpecification (Origin t) (Origin t) (Wrap t) (Wrap t)))
detail
instance {-# overlappable #-}
(NameTranslation t, WrapTranslation t, Functor (Wrap t),
Abstract.SupportFor 'Extensions.ExplicitNamespaces (Origin t)
~ Abstract.SupportFor 'Extensions.ExplicitNamespaces (Target t),
Abstract.SupportFor 'Extensions.ImplicitParameters (Origin t)
~ Abstract.SupportFor 'Extensions.ImplicitParameters (Target t),
Abstract.SupportFor 'Extensions.LambdaCase (Origin t)
~ Abstract.SupportFor 'Extensions.LambdaCase (Target t),
Abstract.SupportFor 'Extensions.QualifiedDo (Origin t)
~ Abstract.SupportFor 'Extensions.QualifiedDo (Target t),
Abstract.SupportFor 'Extensions.RecursiveDo (Origin t)
~ Abstract.SupportFor 'Extensions.RecursiveDo (Target t),
Abstract.SupportFor 'Extensions.RecordWildCards (Origin t)
~ Abstract.SupportFor 'Extensions.RecordWildCards (Target t),
Abstract.SupportFor 'Extensions.UnboxedSums (Origin t)
~ Abstract.SupportFor 'Extensions.UnboxedSums (Target t),
Abstract.SupportFor 'Extensions.UnboxedTuples (Origin t)
~ Abstract.SupportFor 'Extensions.UnboxedTuples (Target t)) =>
Translation t AST.Expression where
translate :: t
-> Expression (Origin t) (Origin t) (Wrap t) (Wrap t)
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
translate t
_ (AST.ApplyExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
f Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
x) = Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> s (Expression l l d d) -> Expression λ l d s
AST.ApplyExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
f Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
x
translate t
_ (AST.ConditionalExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
cond Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
true Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
false) = Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> s (Expression l l d d)
-> s (Expression l l d d)
-> Expression λ l d s
AST.ConditionalExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
cond Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
true Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
false
translate t
_ (AST.ConstructorExpression Wrap t (Constructor (Origin t) (Origin t) (Wrap t) (Wrap t))
con) = Wrap t (Constructor (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Constructor l l d d) -> Expression λ l d s
AST.ConstructorExpression Wrap t (Constructor (Origin t) (Origin t) (Wrap t) (Wrap t))
con
translate t
_ (AST.CaseExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
scrutinee [Wrap t (CaseAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))]
alts) = Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> [Wrap
t (CaseAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> [s (CaseAlternative l l d d)] -> Expression λ l d s
AST.CaseExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
scrutinee [Wrap t (CaseAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))]
alts
translate t
_ (AST.LambdaCaseExpression SupportFor 'LambdaCase (Origin t)
sup [Wrap t (CaseAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))]
alts) = SupportFor 'LambdaCase (Target t)
-> [Wrap
t (CaseAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'LambdaCase λ
-> [s (CaseAlternative l l d d)] -> Expression λ l d s
AST.LambdaCaseExpression SupportFor 'LambdaCase (Origin t)
SupportFor 'LambdaCase (Target t)
sup [Wrap t (CaseAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))]
alts
translate t
_ (AST.LambdaCasesExpression SupportFor 'LambdaCase (Origin t)
sup [Wrap
t (LambdaCasesAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))]
alts) = SupportFor 'LambdaCase (Target t)
-> [Wrap
t (LambdaCasesAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'LambdaCase λ
-> [s (LambdaCasesAlternative l l d d)] -> Expression λ l d s
AST.LambdaCasesExpression SupportFor 'LambdaCase (Origin t)
SupportFor 'LambdaCase (Target t)
sup [Wrap
t (LambdaCasesAlternative (Origin t) (Origin t) (Wrap t) (Wrap t))]
alts
translate t
_ (AST.MultiWayIfExpression [Wrap
t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))]
alts) = [Wrap
t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[s (GuardedExpression l l d d)] -> Expression λ l d s
AST.MultiWayIfExpression [Wrap
t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))]
alts
translate t
_ (AST.DoExpression Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
statements) = Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (GuardedExpression l l d d) -> Expression λ l d s
AST.DoExpression Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
statements
translate t
_ (AST.MDoExpression Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
statements) = Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (GuardedExpression l l d d) -> Expression λ l d s
AST.MDoExpression Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
statements
translate t
t (AST.QualifiedDoExpression SupportFor 'QualifiedDo (Origin t)
sup ModuleName (Origin t)
m Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
statements) =
SupportFor 'QualifiedDo (Target t)
-> ModuleName (Target t)
-> Wrap
t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'QualifiedDo λ
-> ModuleName λ
-> s (GuardedExpression l l d d)
-> Expression λ l d s
AST.QualifiedDoExpression SupportFor 'QualifiedDo (Origin t)
SupportFor 'QualifiedDo (Target t)
sup (t -> ModuleName (Origin t) -> ModuleName (Target t)
forall t.
NameTranslation t =>
t -> ModuleName (Origin t) -> ModuleName (Target t)
translateModuleName t
t ModuleName (Origin t)
m) Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
statements
translate t
t (AST.MDoQualifiedExpression SupportFor 'QualifiedDo (Origin t)
sup1 SupportFor 'RecursiveDo (Origin t)
sup2 ModuleName (Origin t)
m Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
statements) =
SupportFor 'QualifiedDo (Target t)
-> SupportFor 'RecursiveDo (Target t)
-> ModuleName (Target t)
-> Wrap
t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'QualifiedDo λ
-> SupportFor 'RecursiveDo λ
-> ModuleName λ
-> s (GuardedExpression l l d d)
-> Expression λ l d s
AST.MDoQualifiedExpression SupportFor 'QualifiedDo (Origin t)
SupportFor 'QualifiedDo (Target t)
sup1 SupportFor 'RecursiveDo (Origin t)
SupportFor 'RecursiveDo (Target t)
sup2 (t -> ModuleName (Origin t) -> ModuleName (Target t)
forall t.
NameTranslation t =>
t -> ModuleName (Origin t) -> ModuleName (Target t)
translateModuleName t
t ModuleName (Origin t)
m) Wrap t (GuardedExpression (Origin t) (Origin t) (Wrap t) (Wrap t))
statements
translate t
_ (AST.InfixExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
left Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
op Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
right) = Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> s (Expression l l d d)
-> s (Expression l l d d)
-> Expression λ l d s
AST.InfixExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
left Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
op Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
right
translate t
t (AST.LeftSectionExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
left QualifiedName (Origin t)
op) = Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> QualifiedName (Target t)
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d) -> QualifiedName λ -> Expression λ l d s
AST.LeftSectionExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
left (t -> QualifiedName (Origin t) -> QualifiedName (Target t)
forall t.
NameTranslation t =>
t -> QualifiedName (Origin t) -> QualifiedName (Target t)
translateQualifiedName t
t QualifiedName (Origin t)
op)
translate t
_ (AST.LambdaExpression [Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
pat Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
body) = [Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[s (Pattern l l d d)]
-> s (Expression l l d d) -> Expression λ l d s
AST.LambdaExpression [Wrap t (Pattern (Origin t) (Origin t) (Wrap t) (Wrap t))]
pat Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
body
translate t
_ (AST.LetExpression [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
bindings Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
body) = [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[s (Declaration l l d d)]
-> s (Expression l l d d) -> Expression λ l d s
AST.LetExpression [Wrap t (Declaration (Origin t) (Origin t) (Wrap t) (Wrap t))]
bindings Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
body
translate t
_ (AST.ListComprehension Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
element NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
guards) = Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> NonEmpty (s (Statement l l d d)) -> Expression λ l d s
AST.ListComprehension Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
element NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
guards
translate t
_ (AST.ParallelListComprehension Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
element NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
guards1 NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
guards2 [NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))]
guardses) =
Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> [NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))]
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> NonEmpty (s (Statement l l d d))
-> NonEmpty (s (Statement l l d d))
-> [NonEmpty (s (Statement l l d d))]
-> Expression λ l d s
AST.ParallelListComprehension Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
element NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
guards1 NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))
guards2 [NonEmpty
(Wrap t (Statement (Origin t) (Origin t) (Wrap t) (Wrap t)))]
guardses
translate t
_ (AST.ListExpression [Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))]
items) = [Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
[s (Expression l l d d)] -> Expression λ l d s
AST.ListExpression [Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))]
items
translate t
_ (AST.LiteralExpression Wrap t (Value (Origin t) (Origin t) (Wrap t) (Wrap t))
value) = Wrap t (Value (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Value l l d d) -> Expression λ l d s
AST.LiteralExpression Wrap t (Value (Origin t) (Origin t) (Wrap t) (Wrap t))
value
translate t
_ Expression (Origin t) (Origin t) (Wrap t) (Wrap t)
AST.Negate = Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Expression λ l d s
AST.Negate
translate t
_ (AST.RecordExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
record [Wrap t (FieldBinding (Origin t) (Origin t) (Wrap t) (Wrap t))]
fields) = Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> [Wrap t (FieldBinding (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> [s (FieldBinding l l d d)] -> Expression λ l d s
AST.RecordExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
record [Wrap t (FieldBinding (Origin t) (Origin t) (Wrap t) (Wrap t))]
fields
translate t
t (AST.ReferenceExpression QualifiedName (Origin t)
name) = QualifiedName (Target t)
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> Expression λ l d s
AST.ReferenceExpression (t -> QualifiedName (Origin t) -> QualifiedName (Target t)
forall t.
NameTranslation t =>
t -> QualifiedName (Origin t) -> QualifiedName (Target t)
translateQualifiedName t
t QualifiedName (Origin t)
name)
translate t
t (AST.RightSectionExpression QualifiedName (Origin t)
op Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
right) = QualifiedName (Target t)
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> s (Expression l l d d) -> Expression λ l d s
AST.RightSectionExpression (t -> QualifiedName (Origin t) -> QualifiedName (Target t)
forall t.
NameTranslation t =>
t -> QualifiedName (Origin t) -> QualifiedName (Target t)
translateQualifiedName t
t QualifiedName (Origin t)
op) Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
right
translate t
_ (AST.SequenceExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
start Maybe (Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
next Maybe (Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
end) = Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Maybe
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Maybe
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> Maybe (s (Expression l l d d))
-> Maybe (s (Expression l l d d))
-> Expression λ l d s
AST.SequenceExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
start Maybe (Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
next Maybe (Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
end
translate t
_ (AST.TupleExpression NonEmpty
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
items) = NonEmpty
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
NonEmpty (s (Expression l l d d)) -> Expression λ l d s
AST.TupleExpression NonEmpty
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
items
translate t
_ (AST.TupleSectionExpression NonEmpty
(Maybe
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))))
items) = NonEmpty
(Maybe
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))))
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
NonEmpty (Maybe (s (Expression l l d d))) -> Expression λ l d s
AST.TupleSectionExpression NonEmpty
(Maybe
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))))
items
translate t
_ (AST.UnboxedTupleExpression SupportFor 'UnboxedTuples (Origin t)
support NonEmpty
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
items) = SupportFor 'UnboxedTuples (Target t)
-> NonEmpty
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'UnboxedTuples λ
-> NonEmpty (s (Expression l l d d)) -> Expression λ l d s
AST.UnboxedTupleExpression SupportFor 'UnboxedTuples (Origin t)
SupportFor 'UnboxedTuples (Target t)
support NonEmpty
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t)))
items
translate t
_ (AST.UnboxedTupleSectionExpression SupportFor 'UnboxedTuples (Origin t)
support NonEmpty
(Maybe
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))))
items) = SupportFor 'UnboxedTuples (Target t)
-> NonEmpty
(Maybe
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))))
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'UnboxedTuples λ
-> NonEmpty (Maybe (s (Expression l l d d))) -> Expression λ l d s
AST.UnboxedTupleSectionExpression SupportFor 'UnboxedTuples (Origin t)
SupportFor 'UnboxedTuples (Target t)
support NonEmpty
(Maybe
(Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))))
items
translate t
_ (AST.UnboxedSumExpression SupportFor 'UnboxedSums (Origin t)
support Int
before Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
branch Int
after) =
SupportFor 'UnboxedSums (Target t)
-> Int
-> Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Int
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'UnboxedSums λ
-> Int -> s (Expression l l d d) -> Int -> Expression λ l d s
AST.UnboxedSumExpression SupportFor 'UnboxedSums (Origin t)
SupportFor 'UnboxedSums (Target t)
support Int
before Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
branch Int
after
translate t
_ (AST.TypedExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
x Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
signature) = Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d) -> s (Type l l d d) -> Expression λ l d s
AST.TypedExpression Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
x Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
signature
translate t
_ (AST.VisibleTypeApplication Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
x Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty) = Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d) -> s (Type l l d d) -> Expression λ l d s
AST.VisibleTypeApplication Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
x Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty
translate t
_ (AST.ExplicitTypeExpression SupportFor 'ExplicitNamespaces (Origin t)
sup Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty) = SupportFor 'ExplicitNamespaces (Target t)
-> Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'ExplicitNamespaces λ
-> s (Type l l d d) -> Expression λ l d s
AST.ExplicitTypeExpression SupportFor 'ExplicitNamespaces (Origin t)
SupportFor 'ExplicitNamespaces (Target t)
sup Wrap t (Type (Origin t) (Origin t) (Wrap t) (Wrap t))
ty
translate t
_ (AST.OverloadedLabel Text
l) = Text -> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Text -> Expression λ l d s
AST.OverloadedLabel Text
l
translate t
t (AST.ImplicitParameterExpression SupportFor 'ImplicitParameters (Origin t)
support Name (Origin t)
name) =
SupportFor 'ImplicitParameters (Target t)
-> Name (Target t)
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'ImplicitParameters λ -> Name λ -> Expression λ l d s
AST.ImplicitParameterExpression SupportFor 'ImplicitParameters (Origin t)
SupportFor 'ImplicitParameters (Target t)
support (t -> Name (Origin t) -> Name (Target t)
forall t.
NameTranslation t =>
t -> Name (Origin t) -> Name (Target t)
translateName t
t Name (Origin t)
name)
translate t
t (AST.GetField Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
record Name (Origin t)
name) = Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
-> Name (Target t)
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d) -> Name λ -> Expression λ l d s
AST.GetField Wrap t (Expression (Origin t) (Origin t) (Wrap t) (Wrap t))
record (t -> Name (Origin t) -> Name (Target t)
forall t.
NameTranslation t =>
t -> Name (Origin t) -> Name (Target t)
translateName t
t Name (Origin t)
name)
translate t
t (AST.FieldProjection NonEmpty (Name (Origin t))
fields) = NonEmpty (Name (Target t))
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
NonEmpty (Name λ) -> Expression λ l d s
AST.FieldProjection (t -> Name (Origin t) -> Name (Target t)
forall t.
NameTranslation t =>
t -> Name (Origin t) -> Name (Target t)
translateName t
t (Name (Origin t) -> Name (Target t))
-> NonEmpty (Name (Origin t)) -> NonEmpty (Name (Target t))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> NonEmpty (Name (Origin t))
fields)
translate t
t (AST.WildcardRecordExpression SupportFor 'RecordWildCards (Origin t)
sup QualifiedName (Origin t)
con [Wrap t (FieldBinding (Origin t) (Origin t) (Wrap t) (Wrap t))]
fields) =
SupportFor 'RecordWildCards (Target t)
-> QualifiedName (Target t)
-> [Wrap t (FieldBinding (Origin t) (Origin t) (Wrap t) (Wrap t))]
-> Expression (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'RecordWildCards λ
-> QualifiedName λ
-> [s (FieldBinding l l d d)]
-> Expression λ l d s
AST.WildcardRecordExpression SupportFor 'RecordWildCards (Origin t)
SupportFor 'RecordWildCards (Target t)
sup (t -> QualifiedName (Origin t) -> QualifiedName (Target t)
forall t.
NameTranslation t =>
t -> QualifiedName (Origin t) -> QualifiedName (Target t)
translateQualifiedName t
t QualifiedName (Origin t)
con) [Wrap t (FieldBinding (Origin t) (Origin t) (Wrap t) (Wrap t))]
fields
instance {-# overlappable #-}
(NameTranslation t, WrapTranslation t, Functor (Wrap t),
Abstract.Name (Origin t) ~ AST.Name (Origin t),
Abstract.Name (Target t) ~ AST.Name (Target t),
Abstract.SupportFor 'Extensions.ExtendedLiterals (Origin t)
~ Abstract.SupportFor 'Extensions.ExtendedLiterals (Target t),
Abstract.SupportFor 'Extensions.MagicHash (Origin t) ~ Abstract.SupportFor 'Extensions.MagicHash (Target t)) =>
Translation t AST.Value where
translate :: t
-> Value (Origin t) (Origin t) (Wrap t) (Wrap t)
-> Value (Target t) (Origin t) (Wrap t) (Wrap t)
translate t
_ (AST.CharLiteral Char
l) = Char -> Value (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Char -> Value λ l d s
AST.CharLiteral Char
l
translate t
_ (AST.FloatingLiteral Rational
l) = Rational -> Value (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Rational -> Value λ l d s
AST.FloatingLiteral Rational
l
translate t
_ (AST.IntegerLiteral Integer
l) = Integer -> Value (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Integer -> Value λ l d s
AST.IntegerLiteral Integer
l
translate t
_ (AST.StringLiteral Text
l) = Text -> Value (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *). Text -> Value λ l d s
AST.StringLiteral Text
l
translate t
t (AST.HashLiteral SupportFor 'MagicHash (Origin t)
sup Value (Origin t) (Origin t) (Wrap t) (Wrap t)
l) = SupportFor 'MagicHash (Target t)
-> Value (Target t) (Origin t) (Wrap t) (Wrap t)
-> Value (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'MagicHash λ -> Value λ l d s -> Value λ l d s
AST.HashLiteral SupportFor 'MagicHash (Origin t)
SupportFor 'MagicHash (Target t)
sup (t
-> Value (Origin t) (Origin t) (Wrap t) (Wrap t)
-> Value (Target t) (Origin t) (Wrap t) (Wrap t)
forall t (node :: TreeNodeKind).
Translation t node =>
t
-> node (Origin t) (Origin t) (Wrap t) (Wrap t)
-> node (Target t) (Origin t) (Wrap t) (Wrap t)
translate t
t Value (Origin t) (Origin t) (Wrap t) (Wrap t)
l)
translate t
t (AST.ExtendedLiteral SupportFor 'ExtendedLiterals (Origin t)
sup Integer
n Name (Origin t)
ty) = SupportFor 'ExtendedLiterals (Target t)
-> Integer
-> Name (Target t)
-> Value (Target t) (Origin t) (Wrap t) (Wrap t)
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'ExtendedLiterals λ
-> Integer -> Name λ -> Value λ l d s
AST.ExtendedLiteral SupportFor 'ExtendedLiterals (Origin t)
SupportFor 'ExtendedLiterals (Target t)
sup Integer
n (t -> Name (Origin t) -> Name (Target t)
forall t.
NameTranslation t =>
t -> Name (Origin t) -> Name (Target t)
translateName t
t Name (Origin t)
Name (Origin t)
ty)