packages feed

language-Modula2 0.1.4.2 → 0.1.5

raw patch · 6 files changed

+130/−116 lines, 6 filesdep ~deep-transformationsPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: deep-transformations

API changes (from Hackage documentation)

- Language.Modula2.Abstract: type family TargetClass l :: Type -> Constraint;
- Language.Modula2.ConstantFolder: [$sel:designatorValue:SynCFDesignator] :: SynCFDesignator l -> Maybe (Placed (Value l l Placed Placed))
- Language.Modula2.ConstantFolder: [$sel:folded:SynCFDesignator] :: SynCFDesignator l -> Mapped Placed (Designator l l Placed Placed)
- Language.Modula2.ConstantFolder: [$sel:folded:SynCFExp] :: SynCFExp λ l -> Mapped Placed (Expression λ l Placed Placed)
- Language.Modula2.ConstantFolder: [$sel:folded:SynCFMod] :: SynCFMod l a -> Mapped Placed a
- Language.Modula2.ConstantFolder: [$sel:folded:SynCF] :: SynCF a -> Mapped Placed a
- Language.Modula2.ConstantFolder: [$sel:foldedValue:SynCFExp] :: SynCFExp λ l -> Maybe (Placed (Value l l Placed Placed))
- Language.Modula2.ConstantFolder: [$sel:moduleEnv:SynCFMod] :: SynCFMod l a -> Environment l
- Language.Modula2.ConstantFolder: instance (Language.Modula2.Abstract.Modula2 l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), v GHC.Types.~ Language.Oberon.Abstract.Value l l Language.Modula2.ConstantFolder.Placed Language.Modula2.ConstantFolder.Placed, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Expression l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.InhCF l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Designator l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.InhCF l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Expression l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFExp λ l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Designator l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFDesignator l) => Transformation.AG.Generics.SynthesizedField "designatorValue" (GHC.Maybe.Maybe (Language.Modula2.ConstantFolder.Placed v)) (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Modula2.AST.Designator l l) Language.Oberon.ConstantFolder.Sem Language.Modula2.ConstantFolder.Placed
- Language.Modula2.ConstantFolder: instance (Language.Modula2.Abstract.Modula2 l, Language.Oberon.Abstract.Nameable l, k GHC.Types.~ Language.Oberon.Abstract.QualIdent l, GHC.Classes.Ord k, GHC.Show.Show k, v GHC.Types.~ Language.Oberon.Abstract.Value l l Language.Modula2.ConstantFolder.Placed Language.Modula2.ConstantFolder.Placed, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Block l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Oberon.Abstract.Block l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Modula2.Abstract.Definition l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Modula2.Abstract.Definition l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Modula2.Abstract.Definition l l Language.Modula2.ConstantFolder.Placed Language.Modula2.ConstantFolder.Placed) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Modula2.Abstract.Definition l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Expression l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFExp l l) => Transformation.AG.Generics.SynthesizedField "moduleEnv" (Data.Map.Internal.Map k (GHC.Maybe.Maybe v)) (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Modula2.AST.Module l l) Language.Oberon.ConstantFolder.Sem Language.Modula2.ConstantFolder.Placed
- Language.Modula2.ConstantFolder: instance (Language.Modula2.Abstract.Modula2 l, Language.Oberon.Abstract.Nameable l, k GHC.Types.~ Language.Oberon.Abstract.QualIdent l, GHC.Classes.Ord k, v GHC.Types.~ Language.Oberon.Abstract.Value l l Language.Modula2.ConstantFolder.Placed Language.Modula2.ConstantFolder.Placed, Language.Modula2.Abstract.Export l GHC.Types.~ Language.Modula2.AST.Export l, Language.Oberon.Abstract.Value l GHC.Types.~ Language.Oberon.AST.Value l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Declaration l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Oberon.Abstract.Declaration l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Type l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCF' (Language.Oberon.Abstract.Type l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.ProcedureHeading l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCF' (Language.Oberon.Abstract.ProcedureHeading l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.FormalParameters l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCF' (Language.Oberon.Abstract.FormalParameters l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Block l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Oberon.Abstract.Block l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.ConstExpression l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFExp l l) => Transformation.AG.Generics.SynthesizedField "moduleEnv" (Data.Map.Internal.Map k (GHC.Maybe.Maybe v)) (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Modula2.AST.Declaration full l l) Language.Oberon.ConstantFolder.Sem Language.Modula2.ConstantFolder.Placed
- Language.Modula2.ConstantFolder: instance (Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Language.Oberon.Abstract.Expression λ GHC.Types.~ Language.Modula2.AST.Expression Language.Modula2.AST.Language, Language.Oberon.Abstract.QualIdent λ GHC.Types.~ Language.Modula2.AST.QualIdent Language.Modula2.AST.Language, Language.Oberon.Abstract.QualIdent l GHC.Types.~ Language.Modula2.AST.QualIdent l, Language.Oberon.Abstract.Element l l GHC.Types.~ Language.Oberon.AST.Element l l, Language.Oberon.Abstract.Value l l GHC.Types.~ Language.Oberon.AST.Value l l, λ GHC.Types.~ Language.Modula2.AST.Language, Prettyprinter.Internal.Pretty (Language.Oberon.AST.Value l l Data.Functor.Identity.Identity Data.Functor.Identity.Identity), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Expression l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFExp l l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Element l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCF' (Language.Oberon.AST.Element l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Designator l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFDesignator l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Modula2.AST.Expression λ l) Language.Oberon.ConstantFolder.Sem Language.Modula2.ConstantFolder.Placed
- Language.Modula2.ConstantFolder: instance GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l) => Transformation.AG.Attribution (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Modula2.ConstantFolder.Modules l) Language.Oberon.ConstantFolder.Sem Language.Modula2.ConstantFolder.Placed
- Language.Modula2.ConstantFolder: type Sem = Semantics Auto ConstantFold
- Language.Modula2.ISO.ConstantFolder: instance (Language.Modula2.ISO.Abstract.Modula2 l, Language.Oberon.Abstract.Nameable l, k GHC.Types.~ Language.Oberon.Abstract.QualIdent l, GHC.Classes.Ord k, v GHC.Types.~ Language.Oberon.Abstract.Value l l Language.Oberon.ConstantFolder.Placed Language.Oberon.ConstantFolder.Placed, Language.Modula2.Abstract.Export l GHC.Types.~ Language.Modula2.AST.Export l, Language.Oberon.Abstract.Value l GHC.Types.~ Language.Oberon.AST.Value l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Declaration l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Oberon.Abstract.Declaration l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Type l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCF' (Language.Oberon.Abstract.Type l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.ProcedureHeading l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCF' (Language.Oberon.Abstract.ProcedureHeading l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.FormalParameters l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCF' (Language.Oberon.Abstract.FormalParameters l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Block l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Oberon.Abstract.Block l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.ConstExpression l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFExp l l) => Transformation.AG.Generics.SynthesizedField "moduleEnv" (Data.Map.Internal.Map k (GHC.Maybe.Maybe v)) (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Modula2.ISO.AST.Declaration full l l) Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Placed
- Language.Modula2.ISO.ConstantFolder: instance (Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Language.Oberon.Abstract.Expression λ GHC.Types.~ Language.Modula2.ISO.AST.Expression Language.Modula2.ISO.AST.Language, Language.Oberon.Abstract.QualIdent λ GHC.Types.~ Language.Modula2.AST.QualIdent Language.Modula2.ISO.AST.Language, Language.Oberon.ConstantFolder.InhCF l GHC.Types.~ Language.Oberon.ConstantFolder.InhCF λ, Prettyprinter.Internal.Pretty (Language.Oberon.AST.Value l l Data.Functor.Identity.Identity Data.Functor.Identity.Identity), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Expression l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFExp l l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Element l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCF' (Language.Oberon.Abstract.Element l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Modula2.ISO.Abstract.Item l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCF' (Language.Modula2.ISO.Abstract.Item l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Designator l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFDesignator l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Modula2.ISO.AST.Expression λ l) Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Placed
- Language.Modula2.ISO.ConstantFolder: instance (Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Declaration l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Oberon.Abstract.Declaration l l), Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.StatementSequence l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.InhCF l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Declaration l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.InhCF l) => Transformation.AG.Generics.Bequether (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Modula2.ISO.AST.Block l l) Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Placed
- Language.Modula2.ISO.ConstantFolder: instance (Language.Oberon.Abstract.Nameable l, k GHC.Types.~ Language.Oberon.Abstract.QualIdent l, v GHC.Types.~ Language.Oberon.Abstract.Value l l Language.Oberon.ConstantFolder.Placed Language.Oberon.ConstantFolder.Placed, GHC.Classes.Ord k, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Declaration l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Oberon.Abstract.Declaration l l)) => Transformation.AG.Generics.SynthesizedField "moduleEnv" (Data.Map.Internal.Map k (GHC.Maybe.Maybe v)) (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Modula2.ISO.AST.Block l l) Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Placed
- Language.Modula2.ISO.ConstantFolder: instance GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l) => Transformation.AG.Attribution (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Modula2.ISO.ConstantFolder.Modules l) Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Placed
+ Language.Modula2: instance (Rank2.Functor (g Language.Modula2.Grammar.NodeWrap), Transformation.Deep.Functor (Transformation.Rank2.Map Language.Modula2.Grammar.NodeWrap Language.Modula2.Placed) g) => Transformation.Full.Functor (Transformation.Rank2.Map Language.Modula2.Grammar.NodeWrap Language.Modula2.Placed) g
+ Language.Modula2: instance (Rank2.Functor (g Language.Modula2.Placed), Transformation.Deep.Functor (Transformation.Rank2.Map Language.Modula2.Placed Data.Functor.Identity.Identity) g) => Transformation.Full.Functor (Transformation.Rank2.Map Language.Modula2.Placed Data.Functor.Identity.Identity) g
+ Language.Modula2.Abstract: type Block l = (x :: Type -> Type -> Type -> Type -> Type -> Type) | x -> l;
+ Language.Modula2.Abstract: type Case l = (x :: Type -> Type -> Type -> Type -> Type -> Type) | x -> l;
+ Language.Modula2.Abstract: type CaseLabels l = (x :: Type -> Type -> Type -> Type -> Type -> Type) | x -> l;
+ Language.Modula2.Abstract: type ConditionalBranch l = (x :: Type -> Type -> Type -> Type -> Type -> Type) | x -> l;
+ Language.Modula2.Abstract: type Declaration l = (d :: Type -> Type -> Type -> Type -> Type -> Type) | d -> l;
+ Language.Modula2.Abstract: type Designator l = (d :: Type -> Type -> Type -> Type -> Type -> Type) | d -> l;
+ Language.Modula2.Abstract: type Element l = (x :: Type -> Type -> Type -> Type -> Type -> Type) | x -> l;
+ Language.Modula2.Abstract: type Expression l = (e :: Type -> Type -> Type -> Type -> Type -> Type) | e -> l;
+ Language.Modula2.Abstract: type FPSection l = (x :: Type -> Type -> Type -> Type -> Type -> Type) | x -> l;
+ Language.Modula2.Abstract: type FieldList l = (x :: Type -> Type -> Type -> Type -> Type -> Type) | x -> l;
+ Language.Modula2.Abstract: type FormalParameters l = (x :: Type -> Type -> Type -> Type -> Type -> Type) | x -> l;
+ Language.Modula2.Abstract: type IdentDef l = (x :: Type) | x -> l;
+ Language.Modula2.Abstract: type Import l = (x :: Type) | x -> l;
+ Language.Modula2.Abstract: type Module l = (m :: Type -> Type -> Type -> Type -> Type -> Type) | m -> l;
+ Language.Modula2.Abstract: type ProcedureHeading l = (x :: Type -> Type -> Type -> Type -> Type -> Type) | x -> l;
+ Language.Modula2.Abstract: type QualIdent l = (x :: Type) | x -> l;
+ Language.Modula2.Abstract: type Statement l = (s :: Type -> Type -> Type -> Type -> Type -> Type) | s -> l;
+ Language.Modula2.Abstract: type StatementSequence l = (x :: Type -> Type -> Type -> Type -> Type -> Type) | x -> l;
+ Language.Modula2.Abstract: type Type l = (t :: Type -> Type -> Type -> Type -> Type -> Type) | t -> l;
+ Language.Modula2.Abstract: type Value l = (v :: Type -> Type -> Type -> Type -> Type -> Type) | v -> l;
+ Language.Modula2.ConstantFolder: [designatorValue] :: SynCFDesignator l -> Maybe (Placed (Value l l Placed Placed))
+ Language.Modula2.ConstantFolder: [foldedValue] :: SynCFExp λ l -> Maybe (Placed (Value l l Placed Placed))
+ Language.Modula2.ConstantFolder: [folded] :: SynCFMod l a -> Mapped Placed a
+ Language.Modula2.ConstantFolder: [moduleEnv] :: SynCFMod l a -> Environment l
+ Language.Modula2.ConstantFolder: instance (Language.Modula2.Abstract.Modula2 l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), v GHC.Types.~ Language.Oberon.Abstract.Value l l Language.Modula2.ConstantFolder.Placed Language.Modula2.ConstantFolder.Placed, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Expression l l) GHC.Types.~ Language.Oberon.ConstantFolder.InhCF l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Designator l l) GHC.Types.~ Language.Oberon.ConstantFolder.InhCF l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Expression l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFExp λ l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Designator l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFDesignator l) => Transformation.AG.Generics.SynthesizedField "designatorValue" (GHC.Maybe.Maybe (Language.Modula2.ConstantFolder.Placed v)) (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Modula2.AST.Designator l l)
+ Language.Modula2.ConstantFolder: instance (Language.Modula2.Abstract.Modula2 l, Language.Oberon.Abstract.Nameable l, k GHC.Types.~ Language.Oberon.Abstract.QualIdent l, GHC.Classes.Ord k, GHC.Show.Show k, v GHC.Types.~ Language.Oberon.Abstract.Value l l Language.Modula2.ConstantFolder.Placed Language.Modula2.ConstantFolder.Placed, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Block l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Oberon.Abstract.Block l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Modula2.Abstract.Definition l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Modula2.Abstract.Definition l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Modula2.Abstract.Definition l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Modula2.Abstract.Definition l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Expression l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFExp l l) => Transformation.AG.Generics.SynthesizedField "moduleEnv" (Data.Map.Internal.Map k (GHC.Maybe.Maybe v)) (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Modula2.AST.Module l l)
+ Language.Modula2.ConstantFolder: instance (Language.Modula2.Abstract.Modula2 l, Language.Oberon.Abstract.Nameable l, k GHC.Types.~ Language.Oberon.Abstract.QualIdent l, GHC.Classes.Ord k, v GHC.Types.~ Language.Oberon.Abstract.Value l l Language.Modula2.ConstantFolder.Placed Language.Modula2.ConstantFolder.Placed, Language.Modula2.Abstract.Export l GHC.Types.~ Language.Modula2.AST.Export l, Language.Oberon.Abstract.Value l GHC.Types.~ Language.Oberon.AST.Value l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Declaration l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Oberon.Abstract.Declaration l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Type l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCF' (Language.Oberon.Abstract.Type l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.ProcedureHeading l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCF' (Language.Oberon.Abstract.ProcedureHeading l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.FormalParameters l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCF' (Language.Oberon.Abstract.FormalParameters l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Block l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Oberon.Abstract.Block l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.ConstExpression l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFExp l l) => Transformation.AG.Generics.SynthesizedField "moduleEnv" (Data.Map.Internal.Map k (GHC.Maybe.Maybe v)) (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Modula2.AST.Declaration full l l)
+ Language.Modula2.ConstantFolder: instance (Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Language.Oberon.Abstract.Expression λ GHC.Types.~ Language.Modula2.AST.Expression Language.Modula2.AST.Language, Language.Oberon.Abstract.QualIdent λ GHC.Types.~ Language.Modula2.AST.QualIdent Language.Modula2.AST.Language, Language.Oberon.Abstract.QualIdent l GHC.Types.~ Language.Modula2.AST.QualIdent l, Language.Oberon.Abstract.Element l l GHC.Types.~ Language.Oberon.AST.Element l l, Language.Oberon.Abstract.Value l l GHC.Types.~ Language.Oberon.AST.Value l l, λ GHC.Types.~ Language.Modula2.AST.Language, Prettyprinter.Internal.Pretty (Language.Oberon.AST.Value l l Data.Functor.Identity.Identity Data.Functor.Identity.Identity), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Expression l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFExp l l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Element l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCF' (Language.Oberon.AST.Element l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Designator l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFDesignator l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Modula2.AST.Expression λ l)
+ Language.Modula2.ConstantFolder: instance GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l) => Transformation.AG.At (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Modula2.ConstantFolder.Modules l)
+ Language.Modula2.ISO.ConstantFolder: instance (Language.Modula2.ISO.Abstract.Modula2 l, Language.Oberon.Abstract.Nameable l, k GHC.Types.~ Language.Oberon.Abstract.QualIdent l, GHC.Classes.Ord k, v GHC.Types.~ Language.Oberon.Abstract.Value l l Language.Oberon.ConstantFolder.Placed Language.Oberon.ConstantFolder.Placed, Language.Modula2.Abstract.Export l GHC.Types.~ Language.Modula2.AST.Export l, Language.Oberon.Abstract.Value l GHC.Types.~ Language.Oberon.AST.Value l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Declaration l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Oberon.Abstract.Declaration l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Type l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCF' (Language.Oberon.Abstract.Type l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.ProcedureHeading l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCF' (Language.Oberon.Abstract.ProcedureHeading l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.FormalParameters l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCF' (Language.Oberon.Abstract.FormalParameters l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Block l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Oberon.Abstract.Block l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.ConstExpression l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFExp l l) => Transformation.AG.Generics.SynthesizedField "moduleEnv" (Data.Map.Internal.Map k (GHC.Maybe.Maybe v)) (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Modula2.ISO.AST.Declaration full l l)
+ Language.Modula2.ISO.ConstantFolder: instance (Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Language.Oberon.Abstract.Expression λ GHC.Types.~ Language.Modula2.ISO.AST.Expression Language.Modula2.ISO.AST.Language, Language.Oberon.Abstract.QualIdent λ GHC.Types.~ Language.Modula2.AST.QualIdent Language.Modula2.ISO.AST.Language, Language.Oberon.ConstantFolder.InhCF l GHC.Types.~ Language.Oberon.ConstantFolder.InhCF λ, Prettyprinter.Internal.Pretty (Language.Oberon.AST.Value l l Data.Functor.Identity.Identity Data.Functor.Identity.Identity), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Expression l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFExp l l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Element l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCF' (Language.Oberon.Abstract.Element l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Modula2.ISO.Abstract.Item l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCF' (Language.Modula2.ISO.Abstract.Item l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Designator l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFDesignator l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Modula2.ISO.AST.Expression λ l)
+ Language.Modula2.ISO.ConstantFolder: instance (Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Declaration l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Oberon.Abstract.Declaration l l), Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.StatementSequence l l) GHC.Types.~ Language.Oberon.ConstantFolder.InhCF l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Declaration l l) GHC.Types.~ Language.Oberon.ConstantFolder.InhCF l) => Transformation.AG.Generics.Bequether (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Modula2.ISO.AST.Block l l)
+ Language.Modula2.ISO.ConstantFolder: instance (Language.Oberon.Abstract.Nameable l, k GHC.Types.~ Language.Oberon.Abstract.QualIdent l, v GHC.Types.~ Language.Oberon.Abstract.Value l l Language.Oberon.ConstantFolder.Placed Language.Oberon.ConstantFolder.Placed, GHC.Classes.Ord k, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Declaration l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Oberon.Abstract.Declaration l l)) => Transformation.AG.Generics.SynthesizedField "moduleEnv" (Data.Map.Internal.Map k (GHC.Maybe.Maybe v)) (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Modula2.ISO.AST.Block l l)
+ Language.Modula2.ISO.ConstantFolder: instance GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l) => Transformation.AG.At (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Modula2.ISO.ConstantFolder.Modules l)
- Language.Modula2: [SomeVersion] :: Version l -> SomeVersion
+ Language.Modula2: [SomeVersion] :: forall l. Version l -> SomeVersion
- Language.Modula2: parseAndSimplifyModule :: (Modula2 l, Nameable l, Functor (Auto ConstantFold) (Expression l l)) => Version l -> Text -> ParseResults Text [Placed (Module l l Placed Placed)]
+ Language.Modula2: parseAndSimplifyModule :: (Modula2 l, Nameable l, Functor (Knit (Auto ConstantFold)) (Expression l l)) => Version l -> Text -> ParseResults Text [Placed (Module l l Placed Placed)]
- Language.Modula2.AST: Add :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.AST: Add :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: And :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.AST: And :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: ArrayType :: ZipList (f (Type l l f' f')) -> f (Type l l f' f') -> Type λ l f' f
+ Language.Modula2.AST: ArrayType :: ZipList (f (Type l l f' f')) -> f (Type l l f' f') -> Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: Assignment :: f (Designator l l f' f') -> f (Expression l l f' f') -> Statement λ l f' f
+ Language.Modula2.AST: Assignment :: f (Designator l l f' f') -> f (Expression l l f' f') -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: CaseFieldList :: Maybe Ident -> QualIdent l -> f (Variant l l f' f') -> ZipList (f (Variant l l f' f')) -> ZipList (f (FieldList l l f' f')) -> FieldList λ l f' f
+ Language.Modula2.AST: CaseFieldList :: Maybe Ident -> QualIdent l -> f (Variant l l f' f') -> ZipList (f (Variant l l f' f')) -> ZipList (f (FieldList l l f' f')) -> FieldList λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: CaseStatement :: f (Expression l l f' f') -> ZipList (f (Case l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Statement λ l f' f
+ Language.Modula2.AST: CaseStatement :: f (Expression l l f' f') -> ZipList (f (Case l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: DefinitionModule :: Ident -> [Import l] -> Maybe (Export l) -> ZipList (f (Definition l l f' f')) -> Module λ l f' f
+ Language.Modula2.AST: DefinitionModule :: Ident -> [Import l] -> Maybe (Export l) -> ZipList (f (Definition l l f' f')) -> Module λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: Dereference :: f (Designator l l f' f') -> Designator λ l f' f
+ Language.Modula2.AST: Dereference :: f (Designator l l f' f') -> Designator λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: Divide :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.AST: Divide :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: EmptyStatement :: Statement λ l f' f
+ Language.Modula2.AST: EmptyStatement :: Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: EnumerationType :: IdentList l -> Type λ l f' f
+ Language.Modula2.AST: EnumerationType :: IdentList l -> Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: Exit :: Statement λ l f' f
+ Language.Modula2.AST: Exit :: Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: Field :: f (Designator l l f' f') -> Ident -> Designator λ l f' f
+ Language.Modula2.AST: Field :: f (Designator l l f' f') -> Ident -> Designator λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: FieldList :: IdentList l -> f (Type l l f' f') -> FieldList λ l f' f
+ Language.Modula2.AST: FieldList :: IdentList l -> f (Type l l f' f') -> FieldList λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: For :: Ident -> f (Expression l l f' f') -> f (Expression l l f' f') -> Maybe (f (Expression l l f' f')) -> f (StatementSequence l l f' f') -> Statement λ l f' f
+ Language.Modula2.AST: For :: Ident -> f (Expression l l f' f') -> f (Expression l l f' f') -> Maybe (f (Expression l l f' f')) -> f (StatementSequence l l f' f') -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: FunctionCall :: f (Designator l l f' f') -> ZipList (f (Expression l l f' f')) -> Expression λ l f' f
+ Language.Modula2.AST: FunctionCall :: f (Designator l l f' f') -> ZipList (f (Expression l l f' f')) -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: If :: f (ConditionalBranch l l f' f') -> ZipList (f (ConditionalBranch l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Statement λ l f' f
+ Language.Modula2.AST: If :: f (ConditionalBranch l l f' f') -> ZipList (f (ConditionalBranch l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: ImplementationModule :: Ident -> Maybe (f (Priority l l f' f')) -> [Import l] -> f (Block l l f' f') -> Module λ l f' f
+ Language.Modula2.AST: ImplementationModule :: Ident -> Maybe (f (Priority l l f' f')) -> [Import l] -> f (Block l l f' f') -> Module λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: Index :: f (Designator l l f' f') -> f (Expression l l f' f') -> ZipList (f (Expression l l f' f')) -> Designator λ l f' f
+ Language.Modula2.AST: Index :: f (Designator l l f' f') -> f (Expression l l f' f') -> ZipList (f (Expression l l f' f')) -> Designator λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: IntegerDivide :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.AST: IntegerDivide :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: Literal :: f (Value l l f' f') -> Expression λ l f' f
+ Language.Modula2.AST: Literal :: f (Value l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: Loop :: f (StatementSequence l l f' f') -> Statement λ l f' f
+ Language.Modula2.AST: Loop :: f (StatementSequence l l f' f') -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: Modulo :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.AST: Modulo :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: Multiply :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.AST: Multiply :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: Negative :: f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.AST: Negative :: f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: Not :: f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.AST: Not :: f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: Or :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.AST: Or :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: PointerType :: f (Type l l f' f') -> Type λ l f' f
+ Language.Modula2.AST: PointerType :: f (Type l l f' f') -> Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: Positive :: f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.AST: Positive :: f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: ProcedureCall :: f (Designator l l f' f') -> Maybe (ZipList (f (Expression l l f' f'))) -> Statement λ l f' f
+ Language.Modula2.AST: ProcedureCall :: f (Designator l l f' f') -> Maybe (ZipList (f (Expression l l f' f'))) -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: ProcedureHeading :: Ident -> Maybe (f (FormalParameters l l f' f')) -> ProcedureHeading λ l f' f
+ Language.Modula2.AST: ProcedureHeading :: Ident -> Maybe (f (FormalParameters l l f' f')) -> ProcedureHeading λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: ProcedureType :: Maybe (f (FormalParameters l l f' f')) -> Type λ l f' f
+ Language.Modula2.AST: ProcedureType :: Maybe (f (FormalParameters l l f' f')) -> Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: ProgramModule :: Ident -> Maybe (f (Priority l l f' f')) -> [Import l] -> f (Block l l f' f') -> Module λ l f' f
+ Language.Modula2.AST: ProgramModule :: Ident -> Maybe (f (Priority l l f' f')) -> [Import l] -> f (Block l l f' f') -> Module λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: Read :: f (Designator l l f' f') -> Expression λ l f' f
+ Language.Modula2.AST: Read :: f (Designator l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: RecordType :: ZipList (f (FieldList l l f' f')) -> Type λ l f' f
+ Language.Modula2.AST: RecordType :: ZipList (f (FieldList l l f' f')) -> Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: Relation :: RelOp -> f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.AST: Relation :: RelOp -> f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: Repeat :: f (StatementSequence l l f' f') -> f (Expression l l f' f') -> Statement λ l f' f
+ Language.Modula2.AST: Repeat :: f (StatementSequence l l f' f') -> f (Expression l l f' f') -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: Return :: Maybe (f (Expression l l f' f')) -> Statement λ l f' f
+ Language.Modula2.AST: Return :: Maybe (f (Expression l l f' f')) -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: Set :: Maybe (QualIdent l) -> ZipList (f (Element l l f' f')) -> Expression λ l f' f
+ Language.Modula2.AST: Set :: Maybe (QualIdent l) -> ZipList (f (Element l l f' f')) -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: SetType :: f (Type l l f' f') -> Type λ l f' f
+ Language.Modula2.AST: SetType :: f (Type l l f' f') -> Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: SubrangeType :: Maybe (QualIdent l) -> f (ConstExpression l l f' f') -> f (ConstExpression l l f' f') -> Type λ l f' f
+ Language.Modula2.AST: SubrangeType :: Maybe (QualIdent l) -> f (ConstExpression l l f' f') -> f (ConstExpression l l f' f') -> Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: Subtract :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.AST: Subtract :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: TypeReference :: QualIdent l -> Type λ l f' f
+ Language.Modula2.AST: TypeReference :: QualIdent l -> Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: Variable :: QualIdent l -> Designator λ l f' f
+ Language.Modula2.AST: Variable :: QualIdent l -> Designator λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: Variant :: f (CaseLabels l l f' f') -> ZipList (f (CaseLabels l l f' f')) -> ZipList (f (FieldList l l f' f')) -> Variant λ l f' f
+ Language.Modula2.AST: Variant :: f (CaseLabels l l f' f') -> ZipList (f (CaseLabels l l f' f')) -> ZipList (f (FieldList l l f' f')) -> Variant λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: While :: f (Expression l l f' f') -> f (StatementSequence l l f' f') -> Statement λ l f' f
+ Language.Modula2.AST: While :: f (Expression l l f' f') -> f (StatementSequence l l f' f') -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: With :: f (Designator l l f' f') -> f (StatementSequence l l f' f') -> Statement λ l f' f
+ Language.Modula2.AST: With :: f (Designator l l f' f') -> f (StatementSequence l l f' f') -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: [ConstantDeclaration] :: IdentDef l -> f (ConstExpression l l f' f') -> Declaration x λ l f' f
+ Language.Modula2.AST: [ConstantDeclaration] :: forall l (f :: Type -> Type) (f' :: Type -> Type) (full :: Bool) λ. IdentDef l -> f (ConstExpression l l f' f') -> Declaration full λ l f' f
- Language.Modula2.AST: [ModuleDeclaration] :: Ident -> Maybe (f (Priority l l f' f')) -> [Import l] -> Maybe (Export l) -> f (Block l l f' f') -> Declaration True λ l f' f
+ Language.Modula2.AST: [ModuleDeclaration] :: forall (f :: Type -> Type) l (f' :: Type -> Type) λ. Ident -> Maybe (f (Priority l l f' f')) -> [Import l] -> Maybe (Export l) -> f (Block l l f' f') -> Declaration 'True λ l f' f
- Language.Modula2.AST: [OpaqueTypeDeclaration] :: IdentDef l -> Declaration False λ l f' f
+ Language.Modula2.AST: [OpaqueTypeDeclaration] :: forall l λ (f' :: Type -> Type) (f :: Type -> Type). IdentDef l -> Declaration 'False λ l f' f
- Language.Modula2.AST: [ProcedureDeclaration] :: f (ProcedureHeading l l f' f') -> f (Block l l f' f') -> Declaration True λ l f' f
+ Language.Modula2.AST: [ProcedureDeclaration] :: forall (f :: Type -> Type) l (f' :: Type -> Type) λ. f (ProcedureHeading l l f' f') -> f (Block l l f' f') -> Declaration 'True λ l f' f
- Language.Modula2.AST: [ProcedureDefinition] :: f (ProcedureHeading l l f' f') -> Declaration False λ l f' f
+ Language.Modula2.AST: [ProcedureDefinition] :: forall (f :: Type -> Type) l (f' :: Type -> Type) λ. f (ProcedureHeading l l f' f') -> Declaration 'False λ l f' f
- Language.Modula2.AST: [TypeDeclaration] :: IdentDef l -> f (Type l l f' f') -> Declaration x λ l f' f
+ Language.Modula2.AST: [TypeDeclaration] :: forall l (f :: Type -> Type) (f' :: Type -> Type) (full :: Bool) λ. IdentDef l -> f (Type l l f' f') -> Declaration full λ l f' f
- Language.Modula2.AST: [VariableDeclaration] :: IdentList l -> f (Type l l f' f') -> Declaration x λ l f' f
+ Language.Modula2.AST: [VariableDeclaration] :: forall l (f :: Type -> Type) (f' :: Type -> Type) (full :: Bool) λ. IdentList l -> f (Type l l f' f') -> Declaration full λ l f' f
- Language.Modula2.AST: data () => Block λ l (f' :: Type -> Type) (f :: Type -> Type)
+ Language.Modula2.AST: data Block λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: data () => Case λ l (f' :: Type -> Type) (f :: Type -> Type)
+ Language.Modula2.AST: data Case λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: data () => CaseLabels λ l (f' :: Type -> Type) (f :: Type -> Type)
+ Language.Modula2.AST: data CaseLabels λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: data () => ConditionalBranch λ l (f' :: Type -> Type) (f :: Type -> Type)
+ Language.Modula2.AST: data ConditionalBranch λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: data Designator λ l f' f
+ Language.Modula2.AST: data Designator λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: data () => Element λ l (f' :: Type -> Type) (f :: Type -> Type)
+ Language.Modula2.AST: data Element λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: data Expression λ l f' f
+ Language.Modula2.AST: data Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: data () => FPSection λ l (f' :: Type -> Type) (f :: Type -> Type)
+ Language.Modula2.AST: data FPSection λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: data FieldList λ l f' f
+ Language.Modula2.AST: data FieldList λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: data () => FormalParameters λ l (f' :: Type -> Type) (f :: Type -> Type)
+ Language.Modula2.AST: data FormalParameters λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: data Module λ l f' f
+ Language.Modula2.AST: data Module λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: data ProcedureHeading λ l f' f
+ Language.Modula2.AST: data ProcedureHeading λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: data () => RelOp
+ Language.Modula2.AST: data RelOp
- Language.Modula2.AST: data Statement λ l f' f
+ Language.Modula2.AST: data Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: data Type λ l f' f
+ Language.Modula2.AST: data Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: data () => Value λ l (f' :: Type -> Type) (f :: Type -> Type)
+ Language.Modula2.AST: data Value λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: data Variant λ l f' f
+ Language.Modula2.AST: data Variant λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.AST: newtype () => StatementSequence λ l (f' :: Type -> Type) (f :: Type -> Type)
+ Language.Modula2.AST: newtype StatementSequence λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.Abstract: arrayType :: Modula2 l => [f (Type l' l' f' f')] -> f (Type l' l' f' f') -> Type l l' f' f
+ Language.Modula2.Abstract: arrayType :: forall f l' (f' :: Type -> Type). Modula2 l => [f (Type l' l' f' f')] -> f (Type l' l' f' f') -> Type l l' f' f
- Language.Modula2.Abstract: caseFieldList :: Modula2 l => Maybe Ident -> QualIdent l' -> NonEmpty (f (Variant l' l' f' f')) -> [f (FieldList l' l' f' f')] -> FieldList l l' f' f
+ Language.Modula2.Abstract: caseFieldList :: forall l' f (f' :: Type -> Type). Modula2 l => Maybe Ident -> QualIdent l' -> NonEmpty (f (Variant l' l' f' f')) -> [f (FieldList l' l' f' f')] -> FieldList l l' f' f
- Language.Modula2.Abstract: class () => Wirthy l where {
+ Language.Modula2.Abstract: class Wirthy l where {
- Language.Modula2.Abstract: constantDefinition :: Modula2 l => IdentDef l' -> f (ConstExpression l' l' f' f') -> Definition l l' f' f
+ Language.Modula2.Abstract: constantDefinition :: forall l' f (f' :: Type -> Type). Modula2 l => IdentDef l' -> f (ConstExpression l' l' f' f') -> Definition l l' f' f
- Language.Modula2.Abstract: data () => RelOp
+ Language.Modula2.Abstract: data RelOp
- Language.Modula2.Abstract: data () => WirthySubsetOf l
+ Language.Modula2.Abstract: data WirthySubsetOf l
- Language.Modula2.Abstract: definitionModule :: Modula2 l => Ident -> [Import l'] -> Maybe (Export l') -> [f (Definition l' l' f' f')] -> Module l l' f' f
+ Language.Modula2.Abstract: definitionModule :: forall l' f (f' :: Type -> Type). Modula2 l => Ident -> [Import l'] -> Maybe (Export l') -> [f (Definition l' l' f' f')] -> Module l l' f' f
- Language.Modula2.Abstract: enumeration :: Modula2 l => IdentList l' -> Type l l' f' f
+ Language.Modula2.Abstract: enumeration :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Modula2 l => IdentList l' -> Type l l' f' f
- Language.Modula2.Abstract: forStatement :: Modula2 l => Ident -> f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Maybe (f (Expression l' l' f' f')) -> f (StatementSequence l' l' f' f') -> Statement l l' f' f
+ Language.Modula2.Abstract: forStatement :: forall f l' (f' :: Type -> Type). Modula2 l => Ident -> f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Maybe (f (Expression l' l' f' f')) -> f (StatementSequence l' l' f' f') -> Statement l l' f' f
- Language.Modula2.Abstract: implementationModule :: Modula2 l => Ident -> Maybe (f (Priority l' l' f' f')) -> [Import l'] -> f (Block l' l' f' f') -> Module l l' f' f
+ Language.Modula2.Abstract: implementationModule :: forall f l' (f' :: Type -> Type). Modula2 l => Ident -> Maybe (f (Priority l' l' f' f')) -> [Import l'] -> f (Block l' l' f' f') -> Module l l' f' f
- Language.Modula2.Abstract: moduleDeclaration :: Modula2 l => Ident -> Maybe (f (Priority l' l' f' f')) -> [Import l'] -> Maybe (Export l') -> f (Block l' l' f' f') -> Declaration l l' f' f
+ Language.Modula2.Abstract: moduleDeclaration :: forall f l' (f' :: Type -> Type). Modula2 l => Ident -> Maybe (f (Priority l' l' f' f')) -> [Import l'] -> Maybe (Export l') -> f (Block l' l' f' f') -> Declaration l l' f' f
- Language.Modula2.Abstract: newtype () => Maybe3 (f :: k -> k1 -> k2 -> Type) (a :: k) (b :: k1) (c :: k2)
+ Language.Modula2.Abstract: newtype Maybe3 (f :: k -> k1 -> k2 -> Type) (a :: k) (b :: k1) (c :: k2)
- Language.Modula2.Abstract: procedureDefinition :: Modula2 l => f (ProcedureHeading l' l' f' f') -> Definition l l' f' f
+ Language.Modula2.Abstract: procedureDefinition :: forall f l' (f' :: Type -> Type). Modula2 l => f (ProcedureHeading l' l' f' f') -> Definition l l' f' f
- Language.Modula2.Abstract: procedureHeading :: Modula2 l => Ident -> Maybe (f (FormalParameters l' l' f' f')) -> ProcedureHeading l l' f' f
+ Language.Modula2.Abstract: procedureHeading :: forall f l' (f' :: Type -> Type). Modula2 l => Ident -> Maybe (f (FormalParameters l' l' f' f')) -> ProcedureHeading l l' f' f
- Language.Modula2.Abstract: programModule :: Modula2 l => Ident -> Maybe (f (Priority l' l' f' f')) -> [Import l'] -> f (Block l' l' f' f') -> Module l l' f' f
+ Language.Modula2.Abstract: programModule :: forall f l' (f' :: Type -> Type). Modula2 l => Ident -> Maybe (f (Priority l' l' f' f')) -> [Import l'] -> f (Block l' l' f' f') -> Module l l' f' f
- Language.Modula2.Abstract: recordType :: Modula2 l => [f (FieldList l' l' f' f')] -> Type l l' f' f
+ Language.Modula2.Abstract: recordType :: forall f l' (f' :: Type -> Type). Modula2 l => [f (FieldList l' l' f' f')] -> Type l l' f' f
- Language.Modula2.Abstract: set :: Modula2 l => Maybe (QualIdent l') -> [f (Element l' l' f' f')] -> Expression l l' f' f
+ Language.Modula2.Abstract: set :: forall l' f (f' :: Type -> Type). Modula2 l => Maybe (QualIdent l') -> [f (Element l' l' f' f')] -> Expression l l' f' f
- Language.Modula2.Abstract: setType :: Modula2 l => f (Type l' l' f' f') -> Type l l' f' f
+ Language.Modula2.Abstract: setType :: forall f l' (f' :: Type -> Type). Modula2 l => f (Type l' l' f' f') -> Type l l' f' f
- Language.Modula2.Abstract: subRange :: Modula2 l => Maybe (QualIdent l') -> f (ConstExpression l' l' f' f') -> f (ConstExpression l' l' f' f') -> Type l l' f' f
+ Language.Modula2.Abstract: subRange :: forall l' f (f' :: Type -> Type). Modula2 l => Maybe (QualIdent l') -> f (ConstExpression l' l' f' f') -> f (ConstExpression l' l' f' f') -> Type l l' f' f
- Language.Modula2.Abstract: type Definition l = (d :: Type -> (Type -> Type) -> (Type -> Type) -> Type) | d -> l;
+ Language.Modula2.Abstract: type Definition l = (d :: Type -> Type -> Type -> Type -> Type -> Type) | d -> l;
- Language.Modula2.Abstract: type Export l = x | x -> l;
+ Language.Modula2.Abstract: type Export l = (x :: Type) | x -> l;
- Language.Modula2.Abstract: type Variant l = (v :: Type -> (Type -> Type) -> (Type -> Type) -> Type) | v -> l;
+ Language.Modula2.Abstract: type Variant l = (v :: Type -> Type -> Type -> Type -> Type -> Type) | v -> l;
- Language.Modula2.Abstract: typeDefinition :: Modula2 l => IdentDef l' -> Maybe (f (Type l' l' f' f')) -> Definition l l' f' f
+ Language.Modula2.Abstract: typeDefinition :: forall l' f (f' :: Type -> Type). Modula2 l => IdentDef l' -> Maybe (f (Type l' l' f' f')) -> Definition l l' f' f
- Language.Modula2.Abstract: variableDefinition :: Modula2 l => IdentList l' -> f (Type l' l' f' f') -> Definition l l' f' f
+ Language.Modula2.Abstract: variableDefinition :: forall l' f (f' :: Type -> Type). Modula2 l => IdentList l' -> f (Type l' l' f' f') -> Definition l l' f' f
- Language.Modula2.Abstract: variant :: Modula2 l => NonEmpty (f (CaseLabels l' l' f' f')) -> [f (FieldList l' l' f' f')] -> Variant l l' f' f
+ Language.Modula2.Abstract: variant :: forall f l' (f' :: Type -> Type). Modula2 l => NonEmpty (f (CaseLabels l' l' f' f')) -> [f (FieldList l' l' f' f')] -> Variant l l' f' f
- Language.Modula2.Abstract: withStatement :: Modula2 l => f (Designator l' l' f' f') -> f (StatementSequence l' l' f' f') -> Statement l l' f' f
+ Language.Modula2.Abstract: withStatement :: forall f l' (f' :: Type -> Type). Modula2 l => f (Designator l' l' f' f') -> f (StatementSequence l' l' f' f') -> Statement l l' f' f
- Language.Modula2.ConstantFolder: data () => ConstantFold
+ Language.Modula2.ConstantFolder: data ConstantFold
- Language.Modula2.ConstantFolder: data () => InhCF l
+ Language.Modula2.ConstantFolder: data InhCF l
- Language.Modula2.ConstantFolder: data () => SynCF a
+ Language.Modula2.ConstantFolder: data SynCF a
- Language.Modula2.ConstantFolder: data () => SynCFDesignator l
+ Language.Modula2.ConstantFolder: data SynCFDesignator l
- Language.Modula2.ConstantFolder: data () => SynCFExp λ l
+ Language.Modula2.ConstantFolder: data SynCFExp λ l
- Language.Modula2.ConstantFolder: data () => SynCFMod l a
+ Language.Modula2.ConstantFolder: data SynCFMod l a
- Language.Modula2.ConstantFolder: foldConstants :: forall l. (Modula2 l, Nameable l, Ord (QualIdent l), Show (QualIdent l), Atts (Inherited (Auto ConstantFold)) (Block l l Sem Sem) ~ InhCF l, Atts (Inherited (Auto ConstantFold)) (Definition l l Sem Sem) ~ InhCF l, Atts (Inherited (Auto ConstantFold)) (Expression l l Sem Sem) ~ InhCF l, Atts (Synthesized (Auto ConstantFold)) (Block l l Sem Sem) ~ SynCFMod' l (Block l l), Atts (Synthesized (Auto ConstantFold)) (Block l l Placed Placed) ~ SynCFMod' l (Block l l), Atts (Synthesized (Auto ConstantFold)) (Definition l l Sem Sem) ~ SynCFMod' l (Definition l l), Atts (Synthesized (Auto ConstantFold)) (Definition l l Placed Placed) ~ SynCFMod' l (Definition l l), Atts (Synthesized (Auto ConstantFold)) (Expression l l Sem Sem) ~ SynCFExp l l, Atts (Synthesized (Auto ConstantFold)) (Expression l l Placed Placed) ~ SynCFExp l l, Functor (Auto ConstantFold) (Block l l), Functor (Auto ConstantFold) (Definition l l), Functor (Auto ConstantFold) (Expression l l)) => Environment l -> Module l l Placed Placed -> Module l l Placed Placed
+ Language.Modula2.ConstantFolder: foldConstants :: (Modula2 l, Nameable l, Ord (QualIdent l), Show (QualIdent l), Atts (Inherited (Auto ConstantFold)) (Block l l) ~ InhCF l, Atts (Inherited (Auto ConstantFold)) (Definition l l) ~ InhCF l, Atts (Inherited (Auto ConstantFold)) (Expression l l) ~ InhCF l, Atts (Synthesized (Auto ConstantFold)) (Block l l) ~ SynCFMod' l (Block l l), Atts (Synthesized (Auto ConstantFold)) (Block l l) ~ SynCFMod' l (Block l l), Atts (Synthesized (Auto ConstantFold)) (Definition l l) ~ SynCFMod' l (Definition l l), Atts (Synthesized (Auto ConstantFold)) (Definition l l) ~ SynCFMod' l (Definition l l), Atts (Synthesized (Auto ConstantFold)) (Expression l l) ~ SynCFExp l l, Atts (Synthesized (Auto ConstantFold)) (Expression l l) ~ SynCFExp l l, Functor (Knit (Auto ConstantFold)) (Block l l), Functor (Knit (Auto ConstantFold)) (Definition l l), Functor (Knit (Auto ConstantFold)) (Expression l l)) => Environment l -> Module l l Placed Placed -> Module l l Placed Placed
- Language.Modula2.Grammar: Modula2Grammar :: p Ident -> p (Value l l f f) -> p (Value l l f f) -> p (Value l l f f) -> p Text -> p Text -> p Text -> p Text -> p Text -> p (QualIdent l) -> p (Declaration l l f f) -> p (Definition l l f f) -> p (NodeWrap (ConstExpression l l f f)) -> p RelOp -> p (f (Expression l l f f) -> f (Expression l l f f) -> Expression l l f f) -> p (f (Expression l l f f) -> f (Expression l l f f) -> Expression l l f f) -> p (Expression l l f f) -> p (Element l l f f) -> p (Declaration l l f f) -> p (Definition l l f f) -> p (Type l l f f) -> p (Type l l f f) -> p (Type l l f f) -> p (IdentList l) -> p (Type l l f f) -> p (Type l l f f) -> p (Type l l f f) -> p [f (FieldList l l f f)] -> p (FieldList l l f f) -> p (Variant l l f f) -> p (NonEmpty (f (CaseLabels l l f f))) -> p (CaseLabels l l f f) -> p (Type l l f f) -> p (Type l l f f) -> p (Type l l f f) -> p (FormalParameters l l f f) -> p (Declaration l l f f) -> p (Definition l l f f) -> p (Designator l l f f) -> p (NonEmpty (f (Expression l l f f))) -> p (NodeWrap (Expression l l f f)) -> p (NodeWrap (Expression l l f f)) -> p (NodeWrap (Expression l l f f)) -> p (NodeWrap (Expression l l f f)) -> p [f (Expression l l f f)] -> p (Statement l l f f) -> p (Statement l l f f) -> p (Statement l l f f) -> p (NodeWrap (StatementSequence l l f f)) -> p (Statement l l f f) -> p (Statement l l f f) -> p (Case l l f f) -> p (Statement l l f f) -> p (Statement l l f f) -> p (Statement l l f f) -> p (Statement l l f f) -> p (Statement l l f f) -> p (Declaration l l f f) -> p (Ident, ProcedureHeading l l f f) -> p (Block l l f f) -> p [f (Declaration l l f f)] -> p (FormalParameters l l f f) -> p (FPSection l l f f) -> p (Type l l f f) -> p (Declaration l l f f) -> p (NodeWrap (Priority l l f f)) -> p (Export l) -> p (Import l) -> p (Module l l f f) -> p [f (Definition l l f f)] -> p (Module l l f f) -> p (NodeWrap (Module l l f f)) -> Modula2Grammar l f p
+ Language.Modula2.Grammar: Modula2Grammar :: p Ident -> p (Value l l f f) -> p (Value l l f f) -> p (Value l l f f) -> p Text -> p Text -> p Text -> p Text -> p Text -> p (QualIdent l) -> p (Declaration l l f f) -> p (Definition l l f f) -> p (NodeWrap (ConstExpression l l f f)) -> p RelOp -> p (f (Expression l l f f) -> f (Expression l l f f) -> Expression l l f f) -> p (f (Expression l l f f) -> f (Expression l l f f) -> Expression l l f f) -> p (Expression l l f f) -> p (Element l l f f) -> p (Declaration l l f f) -> p (Definition l l f f) -> p (Type l l f f) -> p (Type l l f f) -> p (Type l l f f) -> p (IdentList l) -> p (Type l l f f) -> p (Type l l f f) -> p (Type l l f f) -> p [f (FieldList l l f f)] -> p (FieldList l l f f) -> p (Variant l l f f) -> p (NonEmpty (f (CaseLabels l l f f))) -> p (CaseLabels l l f f) -> p (Type l l f f) -> p (Type l l f f) -> p (Type l l f f) -> p (FormalParameters l l f f) -> p (Declaration l l f f) -> p (Definition l l f f) -> p (Designator l l f f) -> p (NonEmpty (f (Expression l l f f))) -> p (NodeWrap (Expression l l f f)) -> p (NodeWrap (Expression l l f f)) -> p (NodeWrap (Expression l l f f)) -> p (NodeWrap (Expression l l f f)) -> p [f (Expression l l f f)] -> p (Statement l l f f) -> p (Statement l l f f) -> p (Statement l l f f) -> p (NodeWrap (StatementSequence l l f f)) -> p (Statement l l f f) -> p (Statement l l f f) -> p (Case l l f f) -> p (Statement l l f f) -> p (Statement l l f f) -> p (Statement l l f f) -> p (Statement l l f f) -> p (Statement l l f f) -> p (Declaration l l f f) -> p (Ident, ProcedureHeading l l f f) -> p (Block l l f f) -> p [f (Declaration l l f f)] -> p (FormalParameters l l f f) -> p (FPSection l l f f) -> p (Type l l f f) -> p (Declaration l l f f) -> p (NodeWrap (Priority l l f f)) -> p (Export l) -> p (Import l) -> p (Module l l f f) -> p [f (Definition l l f f)] -> p (Module l l f f) -> p (NodeWrap (Module l l f f)) -> Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type)
- Language.Modula2.Grammar: [actualParameters] :: Modula2Grammar l f p -> p [f (Expression l l f f)]
+ Language.Modula2.Grammar: [actualParameters] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p [f (Expression l l f f)]
- Language.Modula2.Grammar: [addOperator] :: Modula2Grammar l f p -> p (f (Expression l l f f) -> f (Expression l l f f) -> Expression l l f f)
+ Language.Modula2.Grammar: [addOperator] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (f (Expression l l f f) -> f (Expression l l f f) -> Expression l l f f)
- Language.Modula2.Grammar: [arrayType] :: Modula2Grammar l f p -> p (Type l l f f)
+ Language.Modula2.Grammar: [arrayType] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Type l l f f)
- Language.Modula2.Grammar: [assignment] :: Modula2Grammar l f p -> p (Statement l l f f)
+ Language.Modula2.Grammar: [assignment] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Statement l l f f)
- Language.Modula2.Grammar: [block] :: Modula2Grammar l f p -> p (Block l l f f)
+ Language.Modula2.Grammar: [block] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Block l l f f)
- Language.Modula2.Grammar: [caseLabelList] :: Modula2Grammar l f p -> p (NonEmpty (f (CaseLabels l l f f)))
+ Language.Modula2.Grammar: [caseLabelList] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (NonEmpty (f (CaseLabels l l f f)))
- Language.Modula2.Grammar: [caseLabels] :: Modula2Grammar l f p -> p (CaseLabels l l f f)
+ Language.Modula2.Grammar: [caseLabels] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (CaseLabels l l f f)
- Language.Modula2.Grammar: [caseStatement] :: Modula2Grammar l f p -> p (Statement l l f f)
+ Language.Modula2.Grammar: [caseStatement] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Statement l l f f)
- Language.Modula2.Grammar: [case_prod] :: Modula2Grammar l f p -> p (Case l l f f)
+ Language.Modula2.Grammar: [case_prod] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Case l l f f)
- Language.Modula2.Grammar: [compilationUnit] :: Modula2Grammar l f p -> p (NodeWrap (Module l l f f))
+ Language.Modula2.Grammar: [compilationUnit] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (NodeWrap (Module l l f f))
- Language.Modula2.Grammar: [constExpression] :: Modula2Grammar l f p -> p (NodeWrap (ConstExpression l l f f))
+ Language.Modula2.Grammar: [constExpression] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (NodeWrap (ConstExpression l l f f))
- Language.Modula2.Grammar: [constantDeclaration] :: Modula2Grammar l f p -> p (Declaration l l f f)
+ Language.Modula2.Grammar: [constantDeclaration] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Declaration l l f f)
- Language.Modula2.Grammar: [constantDefinition] :: Modula2Grammar l f p -> p (Definition l l f f)
+ Language.Modula2.Grammar: [constantDefinition] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Definition l l f f)
- Language.Modula2.Grammar: [declarationSequence] :: Modula2Grammar l f p -> p [f (Declaration l l f f)]
+ Language.Modula2.Grammar: [declarationSequence] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p [f (Declaration l l f f)]
- Language.Modula2.Grammar: [definitionModule] :: Modula2Grammar l f p -> p (Module l l f f)
+ Language.Modula2.Grammar: [definitionModule] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Module l l f f)
- Language.Modula2.Grammar: [definitionSequence] :: Modula2Grammar l f p -> p [f (Definition l l f f)]
+ Language.Modula2.Grammar: [definitionSequence] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p [f (Definition l l f f)]
- Language.Modula2.Grammar: [designator] :: Modula2Grammar l f p -> p (Designator l l f f)
+ Language.Modula2.Grammar: [designator] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Designator l l f f)
- Language.Modula2.Grammar: [digit] :: Modula2Grammar l f p -> p Text
+ Language.Modula2.Grammar: [digit] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p Text
- Language.Modula2.Grammar: [element] :: Modula2Grammar l f p -> p (Element l l f f)
+ Language.Modula2.Grammar: [element] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Element l l f f)
- Language.Modula2.Grammar: [enumeration] :: Modula2Grammar l f p -> p (Type l l f f)
+ Language.Modula2.Grammar: [enumeration] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Type l l f f)
- Language.Modula2.Grammar: [expList] :: Modula2Grammar l f p -> p (NonEmpty (f (Expression l l f f)))
+ Language.Modula2.Grammar: [expList] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (NonEmpty (f (Expression l l f f)))
- Language.Modula2.Grammar: [export] :: Modula2Grammar l f p -> p (Export l)
+ Language.Modula2.Grammar: [export] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Export l)
- Language.Modula2.Grammar: [expression] :: Modula2Grammar l f p -> p (NodeWrap (Expression l l f f))
+ Language.Modula2.Grammar: [expression] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (NodeWrap (Expression l l f f))
- Language.Modula2.Grammar: [fPSection] :: Modula2Grammar l f p -> p (FPSection l l f f)
+ Language.Modula2.Grammar: [fPSection] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (FPSection l l f f)
- Language.Modula2.Grammar: [factor] :: Modula2Grammar l f p -> p (NodeWrap (Expression l l f f))
+ Language.Modula2.Grammar: [factor] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (NodeWrap (Expression l l f f))
- Language.Modula2.Grammar: [fieldListSequence] :: Modula2Grammar l f p -> p [f (FieldList l l f f)]
+ Language.Modula2.Grammar: [fieldListSequence] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p [f (FieldList l l f f)]
- Language.Modula2.Grammar: [fieldList] :: Modula2Grammar l f p -> p (FieldList l l f f)
+ Language.Modula2.Grammar: [fieldList] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (FieldList l l f f)
- Language.Modula2.Grammar: [forStatement] :: Modula2Grammar l f p -> p (Statement l l f f)
+ Language.Modula2.Grammar: [forStatement] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Statement l l f f)
- Language.Modula2.Grammar: [formalParameters] :: Modula2Grammar l f p -> p (FormalParameters l l f f)
+ Language.Modula2.Grammar: [formalParameters] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (FormalParameters l l f f)
- Language.Modula2.Grammar: [formalTypeList] :: Modula2Grammar l f p -> p (FormalParameters l l f f)
+ Language.Modula2.Grammar: [formalTypeList] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (FormalParameters l l f f)
- Language.Modula2.Grammar: [formalType] :: Modula2Grammar l f p -> p (Type l l f f)
+ Language.Modula2.Grammar: [formalType] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Type l l f f)
- Language.Modula2.Grammar: [hexDigit] :: Modula2Grammar l f p -> p Text
+ Language.Modula2.Grammar: [hexDigit] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p Text
- Language.Modula2.Grammar: [identList] :: Modula2Grammar l f p -> p (IdentList l)
+ Language.Modula2.Grammar: [identList] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (IdentList l)
- Language.Modula2.Grammar: [ident] :: Modula2Grammar l f p -> p Ident
+ Language.Modula2.Grammar: [ident] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p Ident
- Language.Modula2.Grammar: [ifStatement] :: Modula2Grammar l f p -> p (Statement l l f f)
+ Language.Modula2.Grammar: [ifStatement] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Statement l l f f)
- Language.Modula2.Grammar: [import_prod] :: Modula2Grammar l f p -> p (Import l)
+ Language.Modula2.Grammar: [import_prod] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Import l)
- Language.Modula2.Grammar: [integer] :: Modula2Grammar l f p -> p (Value l l f f)
+ Language.Modula2.Grammar: [integer] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Value l l f f)
- Language.Modula2.Grammar: [loopStatement] :: Modula2Grammar l f p -> p (Statement l l f f)
+ Language.Modula2.Grammar: [loopStatement] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Statement l l f f)
- Language.Modula2.Grammar: [moduleDeclaration] :: Modula2Grammar l f p -> p (Declaration l l f f)
+ Language.Modula2.Grammar: [moduleDeclaration] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Declaration l l f f)
- Language.Modula2.Grammar: [mulOperator] :: Modula2Grammar l f p -> p (f (Expression l l f f) -> f (Expression l l f f) -> Expression l l f f)
+ Language.Modula2.Grammar: [mulOperator] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (f (Expression l l f f) -> f (Expression l l f f) -> Expression l l f f)
- Language.Modula2.Grammar: [number] :: Modula2Grammar l f p -> p (Value l l f f)
+ Language.Modula2.Grammar: [number] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Value l l f f)
- Language.Modula2.Grammar: [octalDigit] :: Modula2Grammar l f p -> p Text
+ Language.Modula2.Grammar: [octalDigit] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p Text
- Language.Modula2.Grammar: [pointerType] :: Modula2Grammar l f p -> p (Type l l f f)
+ Language.Modula2.Grammar: [pointerType] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Type l l f f)
- Language.Modula2.Grammar: [priority] :: Modula2Grammar l f p -> p (NodeWrap (Priority l l f f))
+ Language.Modula2.Grammar: [priority] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (NodeWrap (Priority l l f f))
- Language.Modula2.Grammar: [procedureCall] :: Modula2Grammar l f p -> p (Statement l l f f)
+ Language.Modula2.Grammar: [procedureCall] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Statement l l f f)
- Language.Modula2.Grammar: [procedureDeclaration] :: Modula2Grammar l f p -> p (Declaration l l f f)
+ Language.Modula2.Grammar: [procedureDeclaration] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Declaration l l f f)
- Language.Modula2.Grammar: [procedureHeading] :: Modula2Grammar l f p -> p (Ident, ProcedureHeading l l f f)
+ Language.Modula2.Grammar: [procedureHeading] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Ident, ProcedureHeading l l f f)
- Language.Modula2.Grammar: [procedureType] :: Modula2Grammar l f p -> p (Type l l f f)
+ Language.Modula2.Grammar: [procedureType] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Type l l f f)
- Language.Modula2.Grammar: [programModule] :: Modula2Grammar l f p -> p (Module l l f f)
+ Language.Modula2.Grammar: [programModule] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Module l l f f)
- Language.Modula2.Grammar: [qualident] :: Modula2Grammar l f p -> p (QualIdent l)
+ Language.Modula2.Grammar: [qualident] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (QualIdent l)
- Language.Modula2.Grammar: [real] :: Modula2Grammar l f p -> p (Value l l f f)
+ Language.Modula2.Grammar: [real] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Value l l f f)
- Language.Modula2.Grammar: [recordType] :: Modula2Grammar l f p -> p (Type l l f f)
+ Language.Modula2.Grammar: [recordType] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Type l l f f)
- Language.Modula2.Grammar: [relation] :: Modula2Grammar l f p -> p RelOp
+ Language.Modula2.Grammar: [relation] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p RelOp
- Language.Modula2.Grammar: [repeatStatement] :: Modula2Grammar l f p -> p (Statement l l f f)
+ Language.Modula2.Grammar: [repeatStatement] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Statement l l f f)
- Language.Modula2.Grammar: [scaleFactor] :: Modula2Grammar l f p -> p Text
+ Language.Modula2.Grammar: [scaleFactor] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p Text
- Language.Modula2.Grammar: [setType] :: Modula2Grammar l f p -> p (Type l l f f)
+ Language.Modula2.Grammar: [setType] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Type l l f f)
- Language.Modula2.Grammar: [set] :: Modula2Grammar l f p -> p (Expression l l f f)
+ Language.Modula2.Grammar: [set] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Expression l l f f)
- Language.Modula2.Grammar: [simpleExpression] :: Modula2Grammar l f p -> p (NodeWrap (Expression l l f f))
+ Language.Modula2.Grammar: [simpleExpression] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (NodeWrap (Expression l l f f))
- Language.Modula2.Grammar: [simpleType] :: Modula2Grammar l f p -> p (Type l l f f)
+ Language.Modula2.Grammar: [simpleType] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Type l l f f)
- Language.Modula2.Grammar: [statementSequence] :: Modula2Grammar l f p -> p (NodeWrap (StatementSequence l l f f))
+ Language.Modula2.Grammar: [statementSequence] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (NodeWrap (StatementSequence l l f f))
- Language.Modula2.Grammar: [statement] :: Modula2Grammar l f p -> p (Statement l l f f)
+ Language.Modula2.Grammar: [statement] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Statement l l f f)
- Language.Modula2.Grammar: [string_prod] :: Modula2Grammar l f p -> p Text
+ Language.Modula2.Grammar: [string_prod] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p Text
- Language.Modula2.Grammar: [subrangeType] :: Modula2Grammar l f p -> p (Type l l f f)
+ Language.Modula2.Grammar: [subrangeType] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Type l l f f)
- Language.Modula2.Grammar: [term] :: Modula2Grammar l f p -> p (NodeWrap (Expression l l f f))
+ Language.Modula2.Grammar: [term] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (NodeWrap (Expression l l f f))
- Language.Modula2.Grammar: [typeDeclaration] :: Modula2Grammar l f p -> p (Declaration l l f f)
+ Language.Modula2.Grammar: [typeDeclaration] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Declaration l l f f)
- Language.Modula2.Grammar: [typeDefinition] :: Modula2Grammar l f p -> p (Definition l l f f)
+ Language.Modula2.Grammar: [typeDefinition] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Definition l l f f)
- Language.Modula2.Grammar: [type_prod] :: Modula2Grammar l f p -> p (Type l l f f)
+ Language.Modula2.Grammar: [type_prod] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Type l l f f)
- Language.Modula2.Grammar: [variableDeclaration] :: Modula2Grammar l f p -> p (Declaration l l f f)
+ Language.Modula2.Grammar: [variableDeclaration] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Declaration l l f f)
- Language.Modula2.Grammar: [variableDefinition] :: Modula2Grammar l f p -> p (Definition l l f f)
+ Language.Modula2.Grammar: [variableDefinition] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Definition l l f f)
- Language.Modula2.Grammar: [variant] :: Modula2Grammar l f p -> p (Variant l l f f)
+ Language.Modula2.Grammar: [variant] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Variant l l f f)
- Language.Modula2.Grammar: [whileStatement] :: Modula2Grammar l f p -> p (Statement l l f f)
+ Language.Modula2.Grammar: [whileStatement] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Statement l l f f)
- Language.Modula2.Grammar: [withStatement] :: Modula2Grammar l f p -> p (Statement l l f f)
+ Language.Modula2.Grammar: [withStatement] :: Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Statement l l f f)
- Language.Modula2.Grammar: comment :: Apply g => Parser g Text Text
+ Language.Modula2.Grammar: comment :: forall (g :: (Type -> Type) -> Type). Apply g => Parser g Text Text
- Language.Modula2.Grammar: data () => Lexeme
+ Language.Modula2.Grammar: data Lexeme
- Language.Modula2.Grammar: data Modula2Grammar l f p
+ Language.Modula2.Grammar: data Modula2Grammar l (f :: Type -> Type) (p :: Type -> Type)
- Language.Modula2.Grammar: delimiter :: LexicalParsing (Parser g Text) => Text -> Parser g Text ()
+ Language.Modula2.Grammar: delimiter :: forall (g :: (Type -> Type) -> Type). LexicalParsing (Parser g Text) => Text -> Parser g Text ()
- Language.Modula2.Grammar: grammar :: forall l g. (Modula2 l, Apply g, LexicalParsing (Parser g Text)) => GrammarBuilder (Modula2Grammar l NodeWrap) g Parser Text
+ Language.Modula2.Grammar: grammar :: forall l (g :: (Type -> Type) -> Type). (Modula2 l, Apply g, LexicalParsing (Parser g Text)) => GrammarBuilder (Modula2Grammar l NodeWrap) g Parser Text
- Language.Modula2.Grammar: newtype () => ParsedLexemes
+ Language.Modula2.Grammar: newtype ParsedLexemes
- Language.Modula2.Grammar: operator :: LexicalParsing (Parser g Text) => Text -> Parser g Text ()
+ Language.Modula2.Grammar: operator :: forall (g :: (Type -> Type) -> Type). LexicalParsing (Parser g Text) => Text -> Parser g Text ()
- Language.Modula2.Grammar: type Parser = ParserT ((,) [[Lexeme]])
+ Language.Modula2.Grammar: type Parser = ParserT (,) [[Lexeme]]
- Language.Modula2.Grammar: whiteSpace :: Apply g => LexicalParsing (Parser g Text) => Parser g Text ()
+ Language.Modula2.Grammar: whiteSpace :: forall (g :: (Type -> Type) -> Type). (Apply g, LexicalParsing (Parser g Text)) => Parser g Text ()
- Language.Modula2.Grammar: wrap :: Apply g => Parser g Text a -> Parser g Text (NodeWrap a)
+ Language.Modula2.Grammar: wrap :: forall (g :: (Type -> Type) -> Type) a. Apply g => Parser g Text a -> Parser g Text (NodeWrap a)
- Language.Modula2.ISO.AST: Add :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.ISO.AST: Add :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: AddressedIdent :: Ident -> f (ConstExpression l l f' f') -> AddressedIdent λ l f' f
+ Language.Modula2.ISO.AST: AddressedIdent :: Ident -> f (ConstExpression l l f' f') -> AddressedIdent λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: And :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.ISO.AST: And :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Array :: Maybe (QualIdent l) -> [f (Item l l f' f')] -> Expression λ l f' f
+ Language.Modula2.ISO.AST: Array :: Maybe (QualIdent l) -> [f (Item l l f' f')] -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: ArrayType :: ZipList (f (Type l l f' f')) -> f (Type l l f' f') -> Type λ l f' f
+ Language.Modula2.ISO.AST: ArrayType :: ZipList (f (Type l l f' f')) -> f (Type l l f' f') -> Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Assignment :: f (Designator l l f' f') -> f (Expression l l f' f') -> Statement λ l f' f
+ Language.Modula2.ISO.AST: Assignment :: f (Designator l l f' f') -> f (Expression l l f' f') -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Block :: ZipList (f (Declaration l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Block λ l f' f
+ Language.Modula2.ISO.AST: Block :: ZipList (f (Declaration l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Block λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: CaseStatement :: f (Expression l l f' f') -> ZipList (f (Case l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Statement λ l f' f
+ Language.Modula2.ISO.AST: CaseStatement :: f (Expression l l f' f') -> ZipList (f (Case l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Divide :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.ISO.AST: Divide :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: EmptyStatement :: Statement λ l f' f
+ Language.Modula2.ISO.AST: EmptyStatement :: Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: EmptyVariant :: Variant λ l f' f
+ Language.Modula2.ISO.AST: EmptyVariant :: Variant λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: EnumerationType :: IdentList l -> Type λ l f' f
+ Language.Modula2.ISO.AST: EnumerationType :: IdentList l -> Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: ExceptionHandlingBlock :: ZipList (f (Declaration l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Block λ l f' f
+ Language.Modula2.ISO.AST: ExceptionHandlingBlock :: ZipList (f (Declaration l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Block λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Exit :: Statement λ l f' f
+ Language.Modula2.ISO.AST: Exit :: Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: For :: Ident -> f (Expression l l f' f') -> f (Expression l l f' f') -> Maybe (f (Expression l l f' f')) -> f (StatementSequence l l f' f') -> Statement λ l f' f
+ Language.Modula2.ISO.AST: For :: Ident -> f (Expression l l f' f') -> f (Expression l l f' f') -> Maybe (f (Expression l l f' f')) -> f (StatementSequence l l f' f') -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: FunctionCall :: f (Designator l l f' f') -> ZipList (f (Expression l l f' f')) -> Expression λ l f' f
+ Language.Modula2.ISO.AST: FunctionCall :: f (Designator l l f' f') -> ZipList (f (Expression l l f' f')) -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: If :: f (ConditionalBranch l l f' f') -> ZipList (f (ConditionalBranch l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Statement λ l f' f
+ Language.Modula2.ISO.AST: If :: f (ConditionalBranch l l f' f') -> ZipList (f (ConditionalBranch l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: IntegerDivide :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.ISO.AST: IntegerDivide :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Literal :: f (Value l l f' f') -> Expression λ l f' f
+ Language.Modula2.ISO.AST: Literal :: f (Value l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Loop :: f (StatementSequence l l f' f') -> Statement λ l f' f
+ Language.Modula2.ISO.AST: Loop :: f (StatementSequence l l f' f') -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Modulo :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.ISO.AST: Modulo :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Multiply :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.ISO.AST: Multiply :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Negative :: f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.ISO.AST: Negative :: f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Not :: f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.ISO.AST: Not :: f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Or :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.ISO.AST: Or :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: PackedSetType :: f (Type l l f' f') -> Type λ l f' f
+ Language.Modula2.ISO.AST: PackedSetType :: f (Type l l f' f') -> Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: PointerType :: f (Type l l f' f') -> Type λ l f' f
+ Language.Modula2.ISO.AST: PointerType :: f (Type l l f' f') -> Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Positive :: f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.ISO.AST: Positive :: f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: ProcedureCall :: f (Designator l l f' f') -> Maybe (ZipList (f (Expression l l f' f'))) -> Statement λ l f' f
+ Language.Modula2.ISO.AST: ProcedureCall :: f (Designator l l f' f') -> Maybe (ZipList (f (Expression l l f' f'))) -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: ProcedureType :: Maybe (f (FormalParameters l l f' f')) -> Type λ l f' f
+ Language.Modula2.ISO.AST: ProcedureType :: Maybe (f (FormalParameters l l f' f')) -> Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Read :: f (Designator l l f' f') -> Expression λ l f' f
+ Language.Modula2.ISO.AST: Read :: f (Designator l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Record :: Maybe (QualIdent l) -> [f (Expression l l f' f')] -> Expression λ l f' f
+ Language.Modula2.ISO.AST: Record :: Maybe (QualIdent l) -> [f (Expression l l f' f')] -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: RecordType :: ZipList (f (FieldList l l f' f')) -> Type λ l f' f
+ Language.Modula2.ISO.AST: RecordType :: ZipList (f (FieldList l l f' f')) -> Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Relation :: RelOp -> f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.ISO.AST: Relation :: RelOp -> f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Remainder :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.ISO.AST: Remainder :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Repeat :: f (StatementSequence l l f' f') -> f (Expression l l f' f') -> Statement λ l f' f
+ Language.Modula2.ISO.AST: Repeat :: f (StatementSequence l l f' f') -> f (Expression l l f' f') -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Repeated :: f (Expression l l f' f') -> f (ConstExpression l l f' f') -> Item λ l f' f
+ Language.Modula2.ISO.AST: Repeated :: f (Expression l l f' f') -> f (ConstExpression l l f' f') -> Item λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: RetryStatement :: Statement λ l f' f
+ Language.Modula2.ISO.AST: RetryStatement :: Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Return :: Maybe (f (Expression l l f' f')) -> Statement λ l f' f
+ Language.Modula2.ISO.AST: Return :: Maybe (f (Expression l l f' f')) -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Set :: Maybe (QualIdent l) -> ZipList (f (Element l l f' f')) -> Expression λ l f' f
+ Language.Modula2.ISO.AST: Set :: Maybe (QualIdent l) -> ZipList (f (Element l l f' f')) -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: SetType :: f (Type l l f' f') -> Type λ l f' f
+ Language.Modula2.ISO.AST: SetType :: f (Type l l f' f') -> Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Single :: f (Expression l l f' f') -> Item λ l f' f
+ Language.Modula2.ISO.AST: Single :: f (Expression l l f' f') -> Item λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: SubrangeType :: Maybe (QualIdent l) -> f (ConstExpression l l f' f') -> f (ConstExpression l l f' f') -> Type λ l f' f
+ Language.Modula2.ISO.AST: SubrangeType :: Maybe (QualIdent l) -> f (ConstExpression l l f' f') -> f (ConstExpression l l f' f') -> Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Subtract :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Modula2.ISO.AST: Subtract :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: TypeReference :: QualIdent l -> Type λ l f' f
+ Language.Modula2.ISO.AST: TypeReference :: QualIdent l -> Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: UnaddressedIdent :: Ident -> AddressedIdent λ l f' f
+ Language.Modula2.ISO.AST: UnaddressedIdent :: Ident -> AddressedIdent λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: Variant :: f (CaseLabels l l f' f') -> ZipList (f (CaseLabels l l f' f')) -> ZipList (f (FieldList l l f' f')) -> Variant λ l f' f
+ Language.Modula2.ISO.AST: Variant :: f (CaseLabels l l f' f') -> ZipList (f (CaseLabels l l f' f')) -> ZipList (f (FieldList l l f' f')) -> Variant λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: While :: f (Expression l l f' f') -> f (StatementSequence l l f' f') -> Statement λ l f' f
+ Language.Modula2.ISO.AST: While :: f (Expression l l f' f') -> f (StatementSequence l l f' f') -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: With :: f (Designator l l f' f') -> f (StatementSequence l l f' f') -> Statement λ l f' f
+ Language.Modula2.ISO.AST: With :: f (Designator l l f' f') -> f (StatementSequence l l f' f') -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: [AddressedVariableDeclaration] :: f (AddressedIdent l l f' f') -> ZipList (f (AddressedIdent l l f' f')) -> f (Type l l f' f') -> Declaration True λ l f' f
+ Language.Modula2.ISO.AST: [AddressedVariableDeclaration] :: forall (f :: Type -> Type) l (f' :: Type -> Type) λ. f (AddressedIdent l l f' f') -> ZipList (f (AddressedIdent l l f' f')) -> f (Type l l f' f') -> Declaration 'True λ l f' f
- Language.Modula2.ISO.AST: [ConstantDeclaration] :: IdentDef l -> f (ConstExpression l l f' f') -> Declaration x λ l f' f
+ Language.Modula2.ISO.AST: [ConstantDeclaration] :: forall l (f :: Type -> Type) (f' :: Type -> Type) (full :: Bool) λ. IdentDef l -> f (ConstExpression l l f' f') -> Declaration full λ l f' f
- Language.Modula2.ISO.AST: [ForwardProcedureDeclaration] :: f (ProcedureHeading l l f' f') -> Declaration True λ l f' f
+ Language.Modula2.ISO.AST: [ForwardProcedureDeclaration] :: forall (f :: Type -> Type) l (f' :: Type -> Type) λ. f (ProcedureHeading l l f' f') -> Declaration 'True λ l f' f
- Language.Modula2.ISO.AST: [ModuleDeclaration] :: Ident -> Maybe (f (Priority l l f' f')) -> [Import l] -> Maybe (Export l) -> f (Block l l f' f') -> Declaration True λ l f' f
+ Language.Modula2.ISO.AST: [ModuleDeclaration] :: forall (f :: Type -> Type) l (f' :: Type -> Type) λ. Ident -> Maybe (f (Priority l l f' f')) -> [Import l] -> Maybe (Export l) -> f (Block l l f' f') -> Declaration 'True λ l f' f
- Language.Modula2.ISO.AST: [OpaqueTypeDeclaration] :: IdentDef l -> Declaration False λ l f' f
+ Language.Modula2.ISO.AST: [OpaqueTypeDeclaration] :: forall l λ (f' :: Type -> Type) (f :: Type -> Type). IdentDef l -> Declaration 'False λ l f' f
- Language.Modula2.ISO.AST: [ProcedureDeclaration] :: f (ProcedureHeading l l f' f') -> f (Block l l f' f') -> Declaration True λ l f' f
+ Language.Modula2.ISO.AST: [ProcedureDeclaration] :: forall (f :: Type -> Type) l (f' :: Type -> Type) λ. f (ProcedureHeading l l f' f') -> f (Block l l f' f') -> Declaration 'True λ l f' f
- Language.Modula2.ISO.AST: [ProcedureDefinition] :: f (ProcedureHeading l l f' f') -> Declaration False λ l f' f
+ Language.Modula2.ISO.AST: [ProcedureDefinition] :: forall (f :: Type -> Type) l (f' :: Type -> Type) λ. f (ProcedureHeading l l f' f') -> Declaration 'False λ l f' f
- Language.Modula2.ISO.AST: [TypeDeclaration] :: IdentDef l -> f (Type l l f' f') -> Declaration x λ l f' f
+ Language.Modula2.ISO.AST: [TypeDeclaration] :: forall l (f :: Type -> Type) (f' :: Type -> Type) (full :: Bool) λ. IdentDef l -> f (Type l l f' f') -> Declaration full λ l f' f
- Language.Modula2.ISO.AST: [VariableDeclaration] :: IdentList l -> f (Type l l f' f') -> Declaration x λ l f' f
+ Language.Modula2.ISO.AST: [VariableDeclaration] :: forall l (f :: Type -> Type) (f' :: Type -> Type) (full :: Bool) λ. IdentList l -> f (Type l l f' f') -> Declaration full λ l f' f
- Language.Modula2.ISO.AST: data AddressedIdent λ l f' f
+ Language.Modula2.ISO.AST: data AddressedIdent λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: data Block λ l f' f
+ Language.Modula2.ISO.AST: data Block λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: data Expression λ l f' f
+ Language.Modula2.ISO.AST: data Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: data Item λ l f' f
+ Language.Modula2.ISO.AST: data Item λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: data Statement λ l f' f
+ Language.Modula2.ISO.AST: data Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: data Type λ l f' f
+ Language.Modula2.ISO.AST: data Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.AST: data Variant λ l f' f
+ Language.Modula2.ISO.AST: data Variant λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Modula2.ISO.Abstract: addressedIdent :: Modula2 l => Ident -> f (ConstExpression l' l' f' f') -> AddressedIdent l l' f' f
+ Language.Modula2.ISO.Abstract: addressedIdent :: forall f l' (f' :: Type -> Type). Modula2 l => Ident -> f (ConstExpression l' l' f' f') -> AddressedIdent l l' f' f
- Language.Modula2.ISO.Abstract: addressedVariableDeclaration :: Modula2 l => NonEmpty (f (AddressedIdent l' l' f' f')) -> f (Type l' l' f' f') -> Declaration l l' f' f
+ Language.Modula2.ISO.Abstract: addressedVariableDeclaration :: forall f l' (f' :: Type -> Type). Modula2 l => NonEmpty (f (AddressedIdent l' l' f' f')) -> f (Type l' l' f' f') -> Declaration l l' f' f
- Language.Modula2.ISO.Abstract: array :: Modula2 l => Maybe (QualIdent l') -> [f (Item l' l' f' f')] -> Expression l l' f' f
+ Language.Modula2.ISO.Abstract: array :: forall l' f (f' :: Type -> Type). Modula2 l => Maybe (QualIdent l') -> [f (Item l' l' f' f')] -> Expression l l' f' f
- Language.Modula2.ISO.Abstract: emptyVariant :: Modula2 l => Variant l l' f' f
+ Language.Modula2.ISO.Abstract: emptyVariant :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Modula2 l => Variant l l' f' f
- Language.Modula2.ISO.Abstract: exceptionHandlingBlock :: Modula2 l => [f (Declaration l' l' f' f')] -> Maybe (f (StatementSequence l' l' f' f')) -> Maybe (f (StatementSequence l' l' f' f')) -> Maybe (f (StatementSequence l' l' f' f')) -> Block l l' f' f
+ Language.Modula2.ISO.Abstract: exceptionHandlingBlock :: forall f l' (f' :: Type -> Type). Modula2 l => [f (Declaration l' l' f' f')] -> Maybe (f (StatementSequence l' l' f' f')) -> Maybe (f (StatementSequence l' l' f' f')) -> Maybe (f (StatementSequence l' l' f' f')) -> Block l l' f' f
- Language.Modula2.ISO.Abstract: forwardProcedureDeclaration :: Modula2 l => f (ProcedureHeading l' l' f' f') -> Declaration l l' f' f
+ Language.Modula2.ISO.Abstract: forwardProcedureDeclaration :: forall f l' (f' :: Type -> Type). Modula2 l => f (ProcedureHeading l' l' f' f') -> Declaration l l' f' f
- Language.Modula2.ISO.Abstract: packedSetType :: Modula2 l => f (Type l' l' f' f') -> Type l l' f' f
+ Language.Modula2.ISO.Abstract: packedSetType :: forall f l' (f' :: Type -> Type). Modula2 l => f (Type l' l' f' f') -> Type l l' f' f
- Language.Modula2.ISO.Abstract: record :: Modula2 l => Maybe (QualIdent l') -> [f (Expression l' l' f' f')] -> Expression l l' f' f
+ Language.Modula2.ISO.Abstract: record :: forall l' f (f' :: Type -> Type). Modula2 l => Maybe (QualIdent l') -> [f (Expression l' l' f' f')] -> Expression l l' f' f
- Language.Modula2.ISO.Abstract: remainder :: Modula2 l => f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression l l' f' f
+ Language.Modula2.ISO.Abstract: remainder :: forall f l' (f' :: Type -> Type). Modula2 l => f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression l l' f' f
- Language.Modula2.ISO.Abstract: repeated :: Modula2 l => f (Expression l' l' f' f') -> f (ConstExpression l' l' f' f') -> Item l l' f' f
+ Language.Modula2.ISO.Abstract: repeated :: forall f l' (f' :: Type -> Type). Modula2 l => f (Expression l' l' f' f') -> f (ConstExpression l' l' f' f') -> Item l l' f' f
- Language.Modula2.ISO.Abstract: retryStatement :: Modula2 l => Statement l l' f' f
+ Language.Modula2.ISO.Abstract: retryStatement :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Modula2 l => Statement l l' f' f
- Language.Modula2.ISO.Abstract: single :: Modula2 l => f (Expression l' l' f' f') -> Item l l' f' f
+ Language.Modula2.ISO.Abstract: single :: forall f l' (f' :: Type -> Type). Modula2 l => f (Expression l' l' f' f') -> Item l l' f' f
- Language.Modula2.ISO.Abstract: type AddressedIdent l = (d :: Type -> (Type -> Type) -> (Type -> Type) -> Type) | d -> l;
+ Language.Modula2.ISO.Abstract: type AddressedIdent l = (d :: Type -> Type -> Type -> Type -> Type -> Type) | d -> l;
- Language.Modula2.ISO.Abstract: type Item l = (i :: Type -> (Type -> Type) -> (Type -> Type) -> Type) | i -> l;
+ Language.Modula2.ISO.Abstract: type Item l = (i :: Type -> Type -> Type -> Type -> Type -> Type) | i -> l;
- Language.Modula2.ISO.Abstract: unaddressedIdent :: Modula2 l => Ident -> AddressedIdent l l' f' f
+ Language.Modula2.ISO.Abstract: unaddressedIdent :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Modula2 l => Ident -> AddressedIdent l l' f' f
- Language.Modula2.ISO.ConstantFolder: data () => ConstantFold
+ Language.Modula2.ISO.ConstantFolder: data ConstantFold
- Language.Modula2.ISO.ConstantFolder: foldConstants :: forall l. (Modula2 l, Nameable l, Ord (QualIdent l), Show (QualIdent l), Atts (Inherited (Auto ConstantFold)) (Block l l Sem Sem) ~ InhCF l, Atts (Inherited (Auto ConstantFold)) (Definition l l Sem Sem) ~ InhCF l, Atts (Inherited (Auto ConstantFold)) (Expression l l Sem Sem) ~ InhCF l, Atts (Synthesized (Auto ConstantFold)) (Block l l Sem Sem) ~ SynCFMod' l (Block l l), Atts (Synthesized (Auto ConstantFold)) (Block l l Placed Placed) ~ SynCFMod' l (Block l l), Atts (Synthesized (Auto ConstantFold)) (Definition l l Sem Sem) ~ SynCFMod' l (Definition l l), Atts (Synthesized (Auto ConstantFold)) (Definition l l Placed Placed) ~ SynCFMod' l (Definition l l), Atts (Synthesized (Auto ConstantFold)) (Expression l l Sem Sem) ~ SynCFExp l l, Atts (Synthesized (Auto ConstantFold)) (Expression l l Placed Placed) ~ SynCFExp l l, Functor (Auto ConstantFold) (Block l l), Functor (Auto ConstantFold) (Definition l l), Functor (Auto ConstantFold) (Expression l l)) => Environment l -> Module l l Placed Placed -> Module l l Placed Placed
+ Language.Modula2.ISO.ConstantFolder: foldConstants :: (Modula2 l, Nameable l, Ord (QualIdent l), Show (QualIdent l), Atts (Inherited (Auto ConstantFold)) (Block l l) ~ InhCF l, Atts (Inherited (Auto ConstantFold)) (Definition l l) ~ InhCF l, Atts (Inherited (Auto ConstantFold)) (Expression l l) ~ InhCF l, Atts (Synthesized (Auto ConstantFold)) (Block l l) ~ SynCFMod' l (Block l l), Atts (Synthesized (Auto ConstantFold)) (Block l l) ~ SynCFMod' l (Block l l), Atts (Synthesized (Auto ConstantFold)) (Definition l l) ~ SynCFMod' l (Definition l l), Atts (Synthesized (Auto ConstantFold)) (Definition l l) ~ SynCFMod' l (Definition l l), Atts (Synthesized (Auto ConstantFold)) (Expression l l) ~ SynCFExp l l, Atts (Synthesized (Auto ConstantFold)) (Expression l l) ~ SynCFExp l l, Functor (Knit (Auto ConstantFold)) (Block l l), Functor (Knit (Auto ConstantFold)) (Definition l l), Functor (Knit (Auto ConstantFold)) (Expression l l)) => Environment l -> Module l l Placed Placed -> Module l l Placed Placed
- Language.Modula2.ISO.Grammar: ISOMixin :: p (f (ConstExpression l l f f)) -> p (Type l l f f) -> p (Block l l f f) -> p (NonEmpty (f (AddressedIdent l l f f))) -> p (Statement l l f f) -> p (Expression l l f f) -> p (Expression l l f f) -> p [f (Item l l f f)] -> p [f (Expression l l f f)] -> p [f (Element l l f f)] -> p (Item l l f f) -> p (f (Expression l l f f)) -> ISOMixin l f p
+ Language.Modula2.ISO.Grammar: ISOMixin :: p (f (ConstExpression l l f f)) -> p (Type l l f f) -> p (Block l l f f) -> p (NonEmpty (f (AddressedIdent l l f f))) -> p (Statement l l f f) -> p (Expression l l f f) -> p (Expression l l f f) -> p [f (Item l l f f)] -> p [f (Expression l l f f)] -> p [f (Element l l f f)] -> p (Item l l f f) -> p (f (Expression l l f f)) -> ISOMixin l (f :: Type -> Type) (p :: Type -> Type)
- Language.Modula2.ISO.Grammar: [arrayConstructedValue] :: ISOMixin l f p -> p [f (Item l l f f)]
+ Language.Modula2.ISO.Grammar: [arrayConstructedValue] :: ISOMixin l (f :: Type -> Type) (p :: Type -> Type) -> p [f (Item l l f f)]
- Language.Modula2.ISO.Grammar: [arrayConstructor] :: ISOMixin l f p -> p (Expression l l f f)
+ Language.Modula2.ISO.Grammar: [arrayConstructor] :: ISOMixin l (f :: Type -> Type) (p :: Type -> Type) -> p (Expression l l f f)
- Language.Modula2.ISO.Grammar: [arrayPart] :: ISOMixin l f p -> p (Item l l f f)
+ Language.Modula2.ISO.Grammar: [arrayPart] :: ISOMixin l (f :: Type -> Type) (p :: Type -> Type) -> p (Item l l f f)
- Language.Modula2.ISO.Grammar: [machineAddress] :: ISOMixin l f p -> p (f (ConstExpression l l f f))
+ Language.Modula2.ISO.Grammar: [machineAddress] :: ISOMixin l (f :: Type -> Type) (p :: Type -> Type) -> p (f (ConstExpression l l f f))
- Language.Modula2.ISO.Grammar: [moduleBody] :: ISOMixin l f p -> p (Block l l f f)
+ Language.Modula2.ISO.Grammar: [moduleBody] :: ISOMixin l (f :: Type -> Type) (p :: Type -> Type) -> p (Block l l f f)
- Language.Modula2.ISO.Grammar: [packedSetType] :: ISOMixin l f p -> p (Type l l f f)
+ Language.Modula2.ISO.Grammar: [packedSetType] :: ISOMixin l (f :: Type -> Type) (p :: Type -> Type) -> p (Type l l f f)
- Language.Modula2.ISO.Grammar: [recordConstructedValue] :: ISOMixin l f p -> p [f (Expression l l f f)]
+ Language.Modula2.ISO.Grammar: [recordConstructedValue] :: ISOMixin l (f :: Type -> Type) (p :: Type -> Type) -> p [f (Expression l l f f)]
- Language.Modula2.ISO.Grammar: [recordConstructor] :: ISOMixin l f p -> p (Expression l l f f)
+ Language.Modula2.ISO.Grammar: [recordConstructor] :: ISOMixin l (f :: Type -> Type) (p :: Type -> Type) -> p (Expression l l f f)
- Language.Modula2.ISO.Grammar: [retryStatement] :: ISOMixin l f p -> p (Statement l l f f)
+ Language.Modula2.ISO.Grammar: [retryStatement] :: ISOMixin l (f :: Type -> Type) (p :: Type -> Type) -> p (Statement l l f f)
- Language.Modula2.ISO.Grammar: [setConstructedValue] :: ISOMixin l f p -> p [f (Element l l f f)]
+ Language.Modula2.ISO.Grammar: [setConstructedValue] :: ISOMixin l (f :: Type -> Type) (p :: Type -> Type) -> p [f (Element l l f f)]
- Language.Modula2.ISO.Grammar: [structureComponent] :: ISOMixin l f p -> p (f (Expression l l f f))
+ Language.Modula2.ISO.Grammar: [structureComponent] :: ISOMixin l (f :: Type -> Type) (p :: Type -> Type) -> p (f (Expression l l f f))
- Language.Modula2.ISO.Grammar: [variableIdentifierList] :: ISOMixin l f p -> p (NonEmpty (f (AddressedIdent l l f f)))
+ Language.Modula2.ISO.Grammar: [variableIdentifierList] :: ISOMixin l (f :: Type -> Type) (p :: Type -> Type) -> p (NonEmpty (f (AddressedIdent l l f f)))
- Language.Modula2.ISO.Grammar: data ISOMixin l f p
+ Language.Modula2.ISO.Grammar: data ISOMixin l (f :: Type -> Type) (p :: Type -> Type)
- Language.Modula2.ISO.Grammar: isoGrammar :: forall l g. (Modula2 l, Apply g, LexicalParsing (Parser g Text)) => GrammarBuilder (ISOGrammar l) g Parser Text
+ Language.Modula2.ISO.Grammar: isoGrammar :: forall l (g :: (Type -> Type) -> Type). (Modula2 l, Apply g, LexicalParsing (Parser g Text)) => GrammarBuilder (ISOGrammar l) g Parser Text
- Language.Modula2.ISO.Grammar: isoMixin :: (Modula2 l, Apply g, LexicalParsing (Parser g Text)) => Modula2Grammar l NodeWrap (Parser g Text) -> ISOMixin l NodeWrap (Parser g Text) -> ISOMixin l NodeWrap (Parser g Text)
+ Language.Modula2.ISO.Grammar: isoMixin :: forall l (g :: (Type -> Type) -> Type). (Modula2 l, Apply g, LexicalParsing (Parser g Text)) => Modula2Grammar l NodeWrap (Parser g Text) -> ISOMixin l NodeWrap (Parser g Text) -> ISOMixin l NodeWrap (Parser g Text)
- Language.Modula2.ISO.Grammar: type ISOGrammar l = Product (ISOMixin l NodeWrap) (Modula2Grammar l NodeWrap)
+ Language.Modula2.ISO.Grammar: type ISOGrammar l = Product ISOMixin l NodeWrap Modula2Grammar l NodeWrap

Files

CHANGELOG.md view
@@ -1,5 +1,9 @@ # Revision history for language-Modula2 +## 0.1.5 -- 2025-11-09++* Adjusted for major changes in `deep-transformations` version 0.4+ ## 0.1.4.2 -- 2025-01-01  * Removed the template-haskell dependency
app/Parse.hs view
@@ -21,6 +21,7 @@ import qualified Transformation.Rank2 as Rank2 import qualified Transformation.Deep as Deep import qualified Transformation.Full as Full+import Transformation.AG (Knit) import Transformation.AG.Generics (Auto)  import Prettyprinter (Pretty(pretty))@@ -100,7 +101,7 @@       SomeVersion ISO -> process ISO   where      process :: (Abstract.Modula2 l, Abstract.Nameable l,-                 Full.Functor (Auto ConstantFold) (Abstract.Expression l l)) => Version l -> IO ()+                 Full.Functor (Knit (Auto ConstantFold)) (Abstract.Expression l l)) => Version l -> IO ()      process version =          case optsFile of              Just file -> (if file == "-" then getContents else readFile file)
language-Modula2.cabal view
@@ -1,7 +1,7 @@ cabal-version:       2.4  name:                language-Modula2-version:             0.1.4.2+version:             0.1.5 synopsis:            Parser, pretty-printer, and more for the Modula-2 programming language description:    The library and the executable supports two versions of the Modula-2 programming language: as described by the@@ -27,7 +27,7 @@   build-depends:       base >= 4.16 && < 5, text < 3, containers >= 0.5 && < 1.0, filepath < 1.6, directory < 1.4,                        parsers >= 0.12.7 && < 0.13, input-parsers >= 0.2.2 && < 0.4, prettyprinter >= 1.2.1 && < 1.8,                        rank2classes >= 1.3 && < 1.6, grammatical-parsers >= 0.7 && < 0.8,-                       deep-transformations >= 0.2 && < 0.4,+                       deep-transformations >= 0.4 && < 0.5,                        language-oberon >= 0.3 && < 0.4   hs-source-dirs:      src   default-language:    Haskell2010
src/Language/Modula2.hs view
@@ -1,5 +1,5 @@-{-# Language FlexibleContexts, GADTs, OverloadedStrings,-             ScopedTypeVariables, StandaloneDeriving, TypeFamilies, TypeOperators #-}+{-# Language FlexibleInstances, FlexibleContexts, GADTs, MultiParamTypeClasses, OverloadedStrings,+             ScopedTypeVariables, StandaloneDeriving, TypeFamilies, TypeOperators, UndecidableInstances #-}  -- | The programming language Modula-2 @@ -19,8 +19,8 @@  import qualified Language.Oberon.Reserializer as Reserializer -import qualified Rank2 as Rank2 (snd)-import Transformation.AG (Atts, Inherited, Synthesized)+import qualified Rank2 as Rank2 (Functor, snd)+import Transformation.AG (Atts, Inherited, Synthesized, Knit) import Transformation.AG.Generics (Auto) import qualified Transformation.Rank2 as Rank2 import qualified Transformation.Full as Full@@ -29,6 +29,7 @@ import Control.Arrow (first) import Control.Monad (when) import Data.Functor.Compose (Compose(Compose, getCompose))+import Data.Functor.Identity (Identity) import qualified Data.Map.Lazy as Map import Data.Map.Lazy (Map) import Data.Monoid ((<>))@@ -44,6 +45,14 @@ -- | Every node in a parsed and resolved AST is wrapped with this functor type Placed = (,) (Int, Grammar.ParsedLexemes, Int) +instance (Rank2.Functor (g Grammar.NodeWrap), Deep.Functor (Rank2.Map Grammar.NodeWrap Placed) g) =>+         Full.Functor (Rank2.Map Grammar.NodeWrap Placed) g where+  (<$>) = Full.mapUpDefault++instance (Rank2.Functor (g Placed), Deep.Functor (Rank2.Map Placed Identity) g) =>+         Full.Functor (Rank2.Map Placed Identity) g where+  (<$>) = Full.mapUpDefault+ -- | The modes of operation data Options = Options{    -- | whether to fold the constants in the parsed module@@ -77,7 +86,7 @@  -- | Parse the given text of a single module and fold constants inside it. parseAndSimplifyModule :: (Abstract.Modula2 l, Abstract.Nameable l,-                           Full.Functor (Auto ConstantFold) (Abstract.Expression l l))+                           Full.Functor (Knit (Auto ConstantFold)) (Abstract.Expression l l))                     => Version l -> Text -> ParseResults Text [Placed (Abstract.Module l l Placed Placed)] parseAndSimplifyModule Report source =    (Reserializer.adjustPositions . (ConstantFolder.foldConstants (predefined Report) <$>) <$>)
src/Language/Modula2/ConstantFolder.hs view
@@ -8,7 +8,7 @@ -- or attribute grammars.  module Language.Modula2.ConstantFolder (foldConstants,-                                        ConstantFold, Sem, Environment, InhCF,+                                        ConstantFold, Environment, InhCF,                                         SynCF(..), SynCFDesignator(..), SynCFExp(..), SynCFMod(..), SynCFMod') where  import Control.Applicative (liftA2, ZipList(ZipList, getZipList))@@ -45,7 +45,7 @@ import qualified Language.Oberon.Abstract as Oberon.Abstract import qualified Language.Oberon.AST as Oberon.AST import qualified Language.Oberon.ConstantFolder as Oberon-import Language.Oberon.ConstantFolder (ConstantFold(ConstantFold), Sem, Environment,+import Language.Oberon.ConstantFolder (ConstantFold(ConstantFold), Environment,                                        InhCF(..), InhCFRoot(..), SynCF(..), SynCF',                                        SynCFRoot(..), SynCFMod(..), SynCFDesignator(..), SynCFMod', SynCFExp(..),                                        anyWhitespace, folded', foldedExp, foldedExp')@@ -57,27 +57,27 @@ -- Note that the Modula-2 'AST.Language' satisfies all constraints in the function's type signature. foldConstants :: forall l. (Abstract.Modula2 l, Abstract.Nameable l,                             Ord (Abstract.QualIdent l), Show (Abstract.QualIdent l),-                            Atts (Inherited (Auto ConstantFold)) (Abstract.Block l l Sem Sem) ~ InhCF l,-                            Atts (Inherited (Auto ConstantFold)) (Abstract.Definition l l Sem Sem) ~ InhCF l,-                            Atts (Inherited (Auto ConstantFold)) (Abstract.Expression l l Sem Sem) ~ InhCF l,-                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Block l l Sem Sem)+                            Atts (Inherited (Auto ConstantFold)) (Abstract.Block l l) ~ InhCF l,+                            Atts (Inherited (Auto ConstantFold)) (Abstract.Definition l l) ~ InhCF l,+                            Atts (Inherited (Auto ConstantFold)) (Abstract.Expression l l) ~ InhCF l,+                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Block l l)                             ~ SynCFMod' l (Abstract.Block l l),-                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Block l l Placed Placed)+                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Block l l)                             ~ SynCFMod' l (Abstract.Block l l),-                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Definition l l Sem Sem)+                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Definition l l)                             ~ SynCFMod' l (Abstract.Definition l l),-                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Definition l l Placed Placed)+                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Definition l l)                             ~ SynCFMod' l (Abstract.Definition l l),-                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Expression l l Sem Sem) ~ SynCFExp l l,-                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Expression l l Placed Placed)+                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Expression l l) ~ SynCFExp l l,+                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Expression l l)                             ~ SynCFExp l l,-                            Full.Functor (Auto ConstantFold) (Abstract.Block l l),-                            Full.Functor (Auto ConstantFold) (Abstract.Definition l l),-                            Full.Functor (Auto ConstantFold) (Abstract.Expression l l))+                            Full.Functor (AG.Knit (Auto ConstantFold)) (Abstract.Block l l),+                            Full.Functor (AG.Knit (Auto ConstantFold)) (Abstract.Definition l l),+                            Full.Functor (AG.Knit (Auto ConstantFold)) (Abstract.Expression l l))               => Environment l -> AST.Module l l Placed Placed -> AST.Module l l Placed Placed foldConstants predef aModule =    snd $ getMapped-   $ (syn (Transformation.apply (Auto ConstantFold) ((0, Trailing [], 0), Auto ConstantFold Deep.<$> aModule)+   $ (syn ((AG.Knit (Auto ConstantFold) Full.<$> ((0, Trailing [], 0), aModule))            `Rank2.apply`            Inherited (InhCF predef undefined))).folded @@ -97,33 +97,33 @@    ~(Modules fs) <*> ~(Modules ms) = Modules (Map.intersectionWith Rank2.apply fs ms)  -- * Boring attribute types-type instance Atts (Synthesized ConstantFold) (Modules l _ _) = SynCFRoot (Modules l Placed Identity)-type instance Atts (Synthesized ConstantFold) (AST.Module λ l _ _) = SynCFMod' l (AST.Module λ l)-type instance Atts (Synthesized ConstantFold) (AST.Declaration full λ l _ _) = SynCFMod' l (AST.Declaration full λ l)-type instance Atts (Synthesized ConstantFold) (AST.ProcedureHeading λ l _ _) = SynCF' (AST.ProcedureHeading λ l)-type instance Atts (Synthesized ConstantFold) (AST.Type λ l _ _) = SynCF' (AST.Type λ l)-type instance Atts (Synthesized ConstantFold) (AST.FieldList λ l _ _) = SynCF' (AST.FieldList λ l)-type instance Atts (Synthesized ConstantFold) (AST.Expression λ l _ _) = SynCFExp λ l-type instance Atts (Synthesized ConstantFold) (AST.Designator λ l _ _) = SynCFDesignator l-type instance Atts (Synthesized ConstantFold) (AST.Statement λ l _ _) = SynCF' (AST.Statement λ l)-type instance Atts (Synthesized ConstantFold) (AST.Variant λ l _ _) = SynCF' (AST.Variant λ l)+type instance Atts (Synthesized ConstantFold) (Modules l) = SynCFRoot (Modules l Placed Identity)+type instance Atts (Synthesized ConstantFold) (AST.Module λ l) = SynCFMod' l (AST.Module λ l)+type instance Atts (Synthesized ConstantFold) (AST.Declaration full λ l) = SynCFMod' l (AST.Declaration full λ l)+type instance Atts (Synthesized ConstantFold) (AST.ProcedureHeading λ l) = SynCF' (AST.ProcedureHeading λ l)+type instance Atts (Synthesized ConstantFold) (AST.Type λ l) = SynCF' (AST.Type λ l)+type instance Atts (Synthesized ConstantFold) (AST.FieldList λ l) = SynCF' (AST.FieldList λ l)+type instance Atts (Synthesized ConstantFold) (AST.Expression λ l) = SynCFExp λ l+type instance Atts (Synthesized ConstantFold) (AST.Designator λ l) = SynCFDesignator l+type instance Atts (Synthesized ConstantFold) (AST.Statement λ l) = SynCF' (AST.Statement λ l)+type instance Atts (Synthesized ConstantFold) (AST.Variant λ l) = SynCF' (AST.Variant λ l) -type instance Atts (Inherited ConstantFold) (Modules l _ _) = InhCFRoot l-type instance Atts (Inherited ConstantFold) (AST.Module λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.Declaration full λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.ProcedureHeading λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.Type λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.FieldList λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.Expression λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.Designator λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.Statement λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.Variant λ l _ _) = InhCF l+type instance Atts (Inherited ConstantFold) (Modules l) = InhCFRoot l+type instance Atts (Inherited ConstantFold) (AST.Module λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.Declaration full λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.ProcedureHeading λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.Type λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.FieldList λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.Expression λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.Designator λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.Statement λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.Variant λ l) = InhCF l  type Placed = (,) (Int, ParsedLexemes, Int)  -- * Rules -instance Ord (Abstract.QualIdent l) => Attribution (Auto ConstantFold) (Modules l) Sem Placed where+instance Ord (Abstract.QualIdent l) => AG.At (Auto ConstantFold) (Modules l) where    attribution _ (_, Modules self) (Inherited inheritance, Modules ms) =      (Synthesized SynCFRoot{modulesFolded= Modules (pure . snd . getMapped . (.folded) . syn <$> ms)},       Modules (Map.mapWithKey moduleInheritance self))@@ -132,13 +132,13 @@  instance (Abstract.Modula2 l, Abstract.Nameable l, k ~ Abstract.QualIdent l, Ord k, Show k,           v ~ Abstract.Value l l Placed Placed,-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Block l l Sem Sem) ~ SynCFMod' l (Abstract.Block l l),-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Definition l l Sem Sem)+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Block l l) ~ SynCFMod' l (Abstract.Block l l),+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Definition l l)           ~ SynCFMod' l (Abstract.Definition l l),-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Definition l l Placed Placed)+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Definition l l)           ~ SynCFMod' l (Abstract.Definition l l),-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Expression l l Sem Sem) ~ SynCFExp l l) =>-         SynthesizedField "moduleEnv" (Map k (Maybe v)) (Auto ConstantFold) (AST.Module l l) Sem Placed where+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Expression l l) ~ SynCFExp l l) =>+         SynthesizedField "moduleEnv" (Map k (Maybe v)) (Auto ConstantFold) (AST.Module l l) where    synthesizedField _ _ (_, mod) inheritance mod' =       case (mod, mod') of         (AST.DefinitionModule{}, AST.DefinitionModule _ _ _ definitions) -> foldMap (moduleEnv . syn) definitions@@ -146,16 +146,16 @@  instance (Abstract.Modula2 l, Abstract.Nameable l, k ~ Abstract.QualIdent l, Ord k, v ~ Abstract.Value l l Placed Placed,           Abstract.Export l ~ AST.Export l, Abstract.Value l ~ AST.Value l,-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Declaration l l Sem Sem)+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Declaration l l)           ~ SynCFMod' l (Abstract.Declaration l l),-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Type l l Sem Sem) ~ SynCF' (Abstract.Type l l),-          Atts (Synthesized (Auto ConstantFold)) (Abstract.ProcedureHeading l l Sem Sem)+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Type l l) ~ SynCF' (Abstract.Type l l),+          Atts (Synthesized (Auto ConstantFold)) (Abstract.ProcedureHeading l l)           ~ SynCF' (Abstract.ProcedureHeading l l),-          Atts (Synthesized (Auto ConstantFold)) (Abstract.FormalParameters l l Sem Sem)+          Atts (Synthesized (Auto ConstantFold)) (Abstract.FormalParameters l l)           ~ SynCF' (Abstract.FormalParameters l l),-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Block l l Sem Sem) ~ SynCFMod' l (Abstract.Block l l),-          Atts (Synthesized (Auto ConstantFold)) (Abstract.ConstExpression l l Sem Sem) ~ SynCFExp l l) =>-         SynthesizedField "moduleEnv" (Map k (Maybe v)) (Auto ConstantFold) (AST.Declaration full l l) Sem Placed where+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Block l l) ~ SynCFMod' l (Abstract.Block l l),+          Atts (Synthesized (Auto ConstantFold)) (Abstract.ConstExpression l l) ~ SynCFExp l l) =>+         SynthesizedField "moduleEnv" (Map k (Maybe v)) (Auto ConstantFold) (AST.Declaration full l l) where    synthesizedField _ _ (_, AST.ConstantDeclaration namedef _) _ (AST.ConstantDeclaration _ expression) =       Map.singleton (Abstract.nonQualIdent $ Abstract.getIdentDefName namedef)                     ((snd <$>) . foldedValue $ syn expression)@@ -178,10 +178,10 @@           Abstract.Value l l ~ AST.Value l l,           λ ~ AST.Language,           Pretty (AST.Value l l Identity Identity),-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Expression l l Sem Sem) ~ SynCFExp l l,-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Element l l Sem Sem) ~ SynCF' (AST.Element l l),-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Designator l l Sem Sem) ~ SynCFDesignator l) =>-         Synthesizer (Auto ConstantFold) (AST.Expression λ l) Sem Placed where+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Expression l l) ~ SynCFExp l l,+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Element l l) ~ SynCF' (AST.Element l l),+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Designator l l) ~ SynCFDesignator l) =>+         Synthesizer (Auto ConstantFold) (AST.Expression λ l) where    synthesis _ (pos, AST.Set t _elements) _ (AST.Set _t elements) =       SynCFExp{folded= Mapped (pos, Abstract.set t (getMapped . folded' . syn <$> getZipList elements)),                foldedValue= Nothing}@@ -231,10 +231,10 @@ minSet = 0  instance (Abstract.Modula2 l, Ord (Abstract.QualIdent l), v ~ Abstract.Value l l Placed Placed,-          Atts (Inherited (Auto ConstantFold)) (Abstract.Expression l l Sem Sem) ~ InhCF l,-          Atts (Inherited (Auto ConstantFold)) (Abstract.Designator l l Sem Sem) ~ InhCF l,-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Expression l l Sem Sem) ~ SynCFExp λ l,-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Designator l l Sem Sem) ~ SynCFDesignator l) =>-         SynthesizedField "designatorValue" (Maybe (Placed v)) (Auto ConstantFold) (AST.Designator l l) Sem Placed where+          Atts (Inherited (Auto ConstantFold)) (Abstract.Expression l l) ~ InhCF l,+          Atts (Inherited (Auto ConstantFold)) (Abstract.Designator l l) ~ InhCF l,+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Expression l l) ~ SynCFExp λ l,+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Designator l l) ~ SynCFDesignator l) =>+         SynthesizedField "designatorValue" (Maybe (Placed v)) (Auto ConstantFold) (AST.Designator l l) where    synthesizedField _ _ (pos, AST.Variable q) inheritance _ = (,) pos <$> join (Map.lookup q $ env inheritance)    synthesizedField _ _ _ _ _ = Nothing
src/Language/Modula2/ISO/ConstantFolder.hs view
@@ -48,7 +48,7 @@ import qualified Language.Oberon.Abstract as Oberon.Abstract import qualified Language.Oberon.AST as Oberon.AST import qualified Language.Oberon.ConstantFolder as Oberon.ConstantFolder-import Language.Oberon.ConstantFolder (ConstantFold(ConstantFold), Placed, Sem, Environment,+import Language.Oberon.ConstantFolder (ConstantFold(ConstantFold), Placed, Environment,                                        InhCF(..), InhCFRoot(..), SynCF(..), SynCF',                                        SynCFRoot(..), SynCFMod(..), SynCFMod', SynCFExp(..), SynCFDesignator(..),                                        anyWhitespace, folded', foldedExp, foldedExp')@@ -61,27 +61,27 @@ -- Note that the ISO Modula-2 'AST.Language' satisfies all constraints in the function's type signature. foldConstants :: forall l. (Abstract.Modula2 l, Abstract.Nameable l,                             Ord (Abstract.QualIdent l), Show (Abstract.QualIdent l),-                            Atts (Inherited (Auto ConstantFold)) (Abstract.Block l l Sem Sem) ~ InhCF l,-                            Atts (Inherited (Auto ConstantFold)) (Abstract.Definition l l Sem Sem) ~ InhCF l,-                            Atts (Inherited (Auto ConstantFold)) (Abstract.Expression l l Sem Sem) ~ InhCF l,-                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Block l l Sem Sem)+                            Atts (Inherited (Auto ConstantFold)) (Abstract.Block l l) ~ InhCF l,+                            Atts (Inherited (Auto ConstantFold)) (Abstract.Definition l l) ~ InhCF l,+                            Atts (Inherited (Auto ConstantFold)) (Abstract.Expression l l) ~ InhCF l,+                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Block l l)                             ~ SynCFMod' l (Abstract.Block l l),-                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Block l l Placed Placed)+                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Block l l)                             ~ SynCFMod' l (Abstract.Block l l),-                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Definition l l Sem Sem)+                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Definition l l)                             ~ SynCFMod' l (Abstract.Definition l l),-                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Definition l l Placed Placed)+                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Definition l l)                             ~ SynCFMod' l (Abstract.Definition l l),-                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Expression l l Sem Sem) ~ SynCFExp l l,-                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Expression l l Placed Placed)+                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Expression l l) ~ SynCFExp l l,+                            Atts (Synthesized (Auto ConstantFold)) (Abstract.Expression l l)                             ~ SynCFExp l l,-                            Full.Functor (Auto ConstantFold) (Abstract.Block l l),-                            Full.Functor (Auto ConstantFold) (Abstract.Definition l l),-                            Full.Functor (Auto ConstantFold) (Abstract.Expression l l))+                            Full.Functor (AG.Knit (Auto ConstantFold)) (Abstract.Block l l),+                            Full.Functor (AG.Knit (Auto ConstantFold)) (Abstract.Definition l l),+                            Full.Functor (AG.Knit (Auto ConstantFold)) (Abstract.Expression l l))               => Environment l -> AST.Module l l Placed Placed -> AST.Module l l Placed Placed foldConstants predef aModule =    snd $ getMapped-   $ (syn (Transformation.apply (Auto ConstantFold) ((0, Trailing [], 0), Auto ConstantFold Deep.<$> aModule)+   $ (syn ((AG.Knit (Auto ConstantFold) Full.<$> ((0, Trailing [], 0), aModule))            `Rank2.apply`            Inherited (InhCF predef undefined))).folded @@ -101,32 +101,32 @@    ~(Modules fs) <*> ~(Modules ms) = Modules (Map.intersectionWith Rank2.apply fs ms)  -- * Boring attribute types-type instance Atts (Synthesized ConstantFold) (Modules l _ _) = SynCFRoot (Modules l Placed Identity)-type instance Atts (Synthesized ConstantFold) (AST.Block λ l _ _) = SynCFMod' l (AST.Block l l)-type instance Atts (Synthesized ConstantFold) (AST.Declaration full λ l _ _) = SynCFMod' l (AST.Declaration full l l)-type instance Atts (Synthesized ConstantFold) (AST.AddressedIdent λ l _ _) = SynCF' (AST.AddressedIdent l l)-type instance Atts (Synthesized ConstantFold) (AST.Type λ l _ _) = SynCF' (AST.Type l l)-type instance Atts (Synthesized ConstantFold) (AST.Expression λ l _ _) = SynCFExp λ l-type instance Atts (Synthesized ConstantFold) (AST.Item λ l _ _) = SynCF' (AST.Item l l)-type instance Atts (Synthesized ConstantFold) (AST.Statement λ l _ _) = SynCF' (AST.Statement l l)-type instance Atts (Synthesized ConstantFold) (AST.Variant λ l _ _) = SynCF' (AST.Variant l l)+type instance Atts (Synthesized ConstantFold) (Modules l) = SynCFRoot (Modules l Placed Identity)+type instance Atts (Synthesized ConstantFold) (AST.Block λ l) = SynCFMod' l (AST.Block l l)+type instance Atts (Synthesized ConstantFold) (AST.Declaration full λ l) = SynCFMod' l (AST.Declaration full l l)+type instance Atts (Synthesized ConstantFold) (AST.AddressedIdent λ l) = SynCF' (AST.AddressedIdent l l)+type instance Atts (Synthesized ConstantFold) (AST.Type λ l) = SynCF' (AST.Type l l)+type instance Atts (Synthesized ConstantFold) (AST.Expression λ l) = SynCFExp λ l+type instance Atts (Synthesized ConstantFold) (AST.Item λ l) = SynCF' (AST.Item l l)+type instance Atts (Synthesized ConstantFold) (AST.Statement λ l) = SynCF' (AST.Statement l l)+type instance Atts (Synthesized ConstantFold) (AST.Variant λ l) = SynCF' (AST.Variant l l) -type instance Atts (Inherited ConstantFold) (Modules l _ _) = InhCFRoot l-type instance Atts (Inherited ConstantFold) (AST.Block λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.Declaration full λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.AddressedIdent λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.Type λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.Item λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.Expression λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.Statement λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.Variant λ l _ _) = InhCF l+type instance Atts (Inherited ConstantFold) (Modules l) = InhCFRoot l+type instance Atts (Inherited ConstantFold) (AST.Block λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.Declaration full λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.AddressedIdent λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.Type λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.Item λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.Expression λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.Statement λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.Variant λ l) = InhCF l  wrap :: a -> Mapped Placed a wrap = Mapped . (,) (0, Trailing [], 0)  -- * Rules -instance Ord (Abstract.QualIdent l) => Attribution (Auto ConstantFold) (Modules l) Sem Placed where+instance Ord (Abstract.QualIdent l) => AG.At (Auto ConstantFold) (Modules l) where    attribution _ (_, Modules self) (Inherited inheritance, Modules ms) =      (Synthesized SynCFRoot{modulesFolded= Modules (pure . snd . getMapped . (.folded) . syn <$> ms)},       Modules (Map.mapWithKey moduleInheritance self))@@ -134,10 +134,10 @@                                                         currentModule= name}  instance (Abstract.Nameable l, Ord (Abstract.QualIdent l),-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Declaration l l Sem Sem) ~ SynCFMod' l (Abstract.Declaration l l),-          Atts (Inherited (Auto ConstantFold)) (Abstract.StatementSequence l l Sem Sem) ~ InhCF l,-          Atts (Inherited (Auto ConstantFold)) (Abstract.Declaration l l Sem Sem) ~ InhCF l) =>-         Bequether (Auto ConstantFold) (AST.Block l l) Sem Placed where+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Declaration l l) ~ SynCFMod' l (Abstract.Declaration l l),+          Atts (Inherited (Auto ConstantFold)) (Abstract.StatementSequence l l) ~ InhCF l,+          Atts (Inherited (Auto ConstantFold)) (Abstract.Declaration l l) ~ InhCF l) =>+         Bequether (Auto ConstantFold) (AST.Block l l) where    bequest _ (pos, AST.Block _decls _stats) inheritance (AST.Block decls stats) =       AST.Block (pure $ Inherited localEnv) (pure $ Inherited localEnv)       where newEnv = Map.unions (moduleEnv . syn <$> decls)@@ -148,25 +148,25 @@             localEnv = InhCF (newEnv `Map.union` env inheritance) (currentModule inheritance)  instance (Abstract.Nameable l, k ~ Abstract.QualIdent l, v ~ Abstract.Value l l Placed Placed, Ord k,-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Declaration l l Sem Sem)+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Declaration l l)           ~ SynCFMod' l (Abstract.Declaration l l)) =>-         SynthesizedField "moduleEnv" (Map k (Maybe v)) (Auto ConstantFold) (AST.Block l l) Sem Placed where+         SynthesizedField "moduleEnv" (Map k (Maybe v)) (Auto ConstantFold) (AST.Block l l) where    synthesizedField _ _ (pos, AST.Block{}) _ (AST.Block decls _stats) = Map.unions (moduleEnv . syn <$> decls)    synthesizedField _ _ (pos, AST.ExceptionHandlingBlock{}) _ (AST.ExceptionHandlingBlock decls _stats _catch _always) =       Map.unions (moduleEnv . syn <$> decls)  instance (Abstract.Modula2 l, Abstract.Nameable l, k ~ Abstract.QualIdent l, Ord k, v ~ Abstract.Value l l Placed Placed,           Abstract.Export l ~ AST.Export l, Abstract.Value l ~ AST.Value l,-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Declaration l l Sem Sem)+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Declaration l l)           ~ SynCFMod' l (Abstract.Declaration l l),-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Type l l Sem Sem) ~ SynCF' (Abstract.Type l l),-          Atts (Synthesized (Auto ConstantFold)) (Abstract.ProcedureHeading l l Sem Sem)+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Type l l) ~ SynCF' (Abstract.Type l l),+          Atts (Synthesized (Auto ConstantFold)) (Abstract.ProcedureHeading l l)           ~ SynCF' (Abstract.ProcedureHeading l l),-          Atts (Synthesized (Auto ConstantFold)) (Abstract.FormalParameters l l Sem Sem)+          Atts (Synthesized (Auto ConstantFold)) (Abstract.FormalParameters l l)           ~ SynCF' (Abstract.FormalParameters l l),-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Block l l Sem Sem) ~ SynCFMod' l (Abstract.Block l l),-          Atts (Synthesized (Auto ConstantFold)) (Abstract.ConstExpression l l Sem Sem) ~ SynCFExp l l) =>-         SynthesizedField "moduleEnv" (Map k (Maybe v)) (Auto ConstantFold) (AST.Declaration full l l) Sem Placed where+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Block l l) ~ SynCFMod' l (Abstract.Block l l),+          Atts (Synthesized (Auto ConstantFold)) (Abstract.ConstExpression l l) ~ SynCFExp l l) =>+         SynthesizedField "moduleEnv" (Map k (Maybe v)) (Auto ConstantFold) (AST.Declaration full l l) where    synthesizedField _ _ (pos, AST.ConstantDeclaration namedef _) _ (AST.ConstantDeclaration _ expression) =       Map.singleton (Abstract.nonQualIdent $ Abstract.getIdentDefName namedef)                     ((snd <$>) . foldedValue $ syn expression)@@ -186,11 +186,11 @@           Abstract.Expression λ ~ AST.Expression AST.Language, Abstract.QualIdent λ ~ AST.QualIdent AST.Language,           InhCF l ~ InhCF λ,           Pretty (AST.Value l l Identity Identity),-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Expression l l Sem Sem) ~ SynCFExp l l,-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Element l l Sem Sem) ~ SynCF' (Abstract.Element l l),-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Item l l Sem Sem) ~ SynCF' (Abstract.Item l l),-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Designator l l Sem Sem) ~ SynCFDesignator l) =>-         Synthesizer (Auto ConstantFold) (AST.Expression λ l) Sem Placed where+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Expression l l) ~ SynCFExp l l,+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Element l l) ~ SynCF' (Abstract.Element l l),+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Item l l) ~ SynCF' (Abstract.Item l l),+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Designator l l) ~ SynCFDesignator l) =>+         Synthesizer (Auto ConstantFold) (AST.Expression λ l) where    synthesis _ (pos, _) _ (AST.Remainder left right) =        foldBinaryInteger pos Abstract.remainder div (syn left) (syn right)    synthesis _ (pos, _) _ (AST.Array itemType dimensions) =