language-Modula2-0.1: Parser, pretty-printer, and more for the Modula-2 programming language
Safe HaskellNone
LanguageHaskell2010

Language.Modula2.AST

Description

Concrete data types for Modula-2 constructs that make up its Abstract Syntax Tree. Every data type from this module is an instance of a type family declared in Language.Modula2.Abstract. This way it can be replaced by another data type for another language while leaving other types to be reused.

Synopsis

Documentation

data Statement λ l f' f Source #

Constructors

EmptyStatement 
Assignment (f (Designator l l f' f')) (f (Expression l l f' f')) 
ProcedureCall (f (Designator l l f' f')) (Maybe (ZipList (f (Expression l l f' f')))) 
If (f (ConditionalBranch l l f' f')) (ZipList (f (ConditionalBranch l l f' f'))) (Maybe (f (StatementSequence l l f' f'))) 
CaseStatement (f (Expression l l f' f')) (ZipList (f (Case l l f' f'))) (Maybe (f (StatementSequence l l f' f'))) 
While (f (Expression l l f' f')) (f (StatementSequence l l f' f')) 
Repeat (f (StatementSequence l l f' f')) (f (Expression l l f' f')) 
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')) 
Loop (f (StatementSequence l l f' f')) 
With (f (Designator l l f' f')) (f (StatementSequence l l f' f')) 
Exit 
Return (Maybe (f (Expression l l f' f'))) 

Instances

Instances details
(Transformation t, Functor t (Designator l l), Functor t (Expression l l), Functor t (Designator l l), Functor t (Expression l l), Functor t (ConditionalBranch l l), Functor t (ConditionalBranch l l), Functor t (StatementSequence l l), Functor t (Expression l l), Functor t (Case l l), Functor t (StatementSequence l l), Functor t (Expression l l), Functor t (StatementSequence l l), Functor t (StatementSequence l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (StatementSequence l l), Functor t (StatementSequence l l), Functor t (Designator l l), Functor t (StatementSequence l l), Functor t (Expression l l)) => Functor t (Statement λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: t -> Statement λ l (Domain t) (Domain t) -> Statement λ l (Codomain t) (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Designator l l), Foldable t (Expression l l), Foldable t (Designator l l), Foldable t (Expression l l), Foldable t (ConditionalBranch l l), Foldable t (ConditionalBranch l l), Foldable t (StatementSequence l l), Foldable t (Expression l l), Foldable t (Case l l), Foldable t (StatementSequence l l), Foldable t (Expression l l), Foldable t (StatementSequence l l), Foldable t (StatementSequence l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (StatementSequence l l), Foldable t (StatementSequence l l), Foldable t (Designator l l), Foldable t (StatementSequence l l), Foldable t (Expression l l)) => Foldable t (Statement λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> Statement λ l (Domain t) (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (Designator l l), Traversable t (Expression l l), Traversable t (Designator l l), Traversable t (Expression l l), Traversable t (ConditionalBranch l l), Traversable t (ConditionalBranch l l), Traversable t (StatementSequence l l), Traversable t (Expression l l), Traversable t (Case l l), Traversable t (StatementSequence l l), Traversable t (Expression l l), Traversable t (StatementSequence l l), Traversable t (StatementSequence l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (StatementSequence l l), Traversable t (StatementSequence l l), Traversable t (Designator l l), Traversable t (StatementSequence l l), Traversable t (Expression l l)) => Traversable t (Statement λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> Statement λ l (Domain t) (Domain t) -> m (Statement λ l f f) #

(Transformation t, At t (Designator l l f' f'), At t (Expression l l f' f'), At t (Designator l l f' f'), At t (Expression l l f' f'), At t (ConditionalBranch l l f' f'), At t (ConditionalBranch l l f' f'), At t (StatementSequence l l f' f'), At t (Expression l l f' f'), At t (Case l l f' f'), At t (StatementSequence l l f' f'), At t (Expression l l f' f'), At t (StatementSequence l l f' f'), At t (StatementSequence l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (StatementSequence l l f' f'), At t (StatementSequence l l f' f'), At t (Designator l l f' f'), At t (StatementSequence l l f' f'), At t (Expression l l f' f')) => Functor t (Statement λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: t -> Statement λ l f' (Domain t) -> Statement λ l f' (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Designator l l f' f'), At t (Expression l l f' f'), At t (Designator l l f' f'), At t (Expression l l f' f'), At t (ConditionalBranch l l f' f'), At t (ConditionalBranch l l f' f'), At t (StatementSequence l l f' f'), At t (Expression l l f' f'), At t (Case l l f' f'), At t (StatementSequence l l f' f'), At t (Expression l l f' f'), At t (StatementSequence l l f' f'), At t (StatementSequence l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (StatementSequence l l f' f'), At t (StatementSequence l l f' f'), At t (Designator l l f' f'), At t (StatementSequence l l f' f'), At t (Expression l l f' f')) => Foldable t (Statement λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> Statement λ l f' (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (Designator l l f' f'), At t (Expression l l f' f'), At t (Designator l l f' f'), At t (Expression l l f' f'), At t (ConditionalBranch l l f' f'), At t (ConditionalBranch l l f' f'), At t (StatementSequence l l f' f'), At t (Expression l l f' f'), At t (Case l l f' f'), At t (StatementSequence l l f' f'), At t (Expression l l f' f'), At t (StatementSequence l l f' f'), At t (StatementSequence l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (StatementSequence l l f' f'), At t (StatementSequence l l f' f'), At t (Designator l l f' f'), At t (StatementSequence l l f' f'), At t (Expression l l f' f')) => Traversable t (Statement λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> Statement λ l f' (Domain t) -> m (Statement λ l f' f) #

(Functor (Auto ConstantFold) (Statement l l), At (Auto ConstantFold) (Statement l l (Codomain (Auto ConstantFold)) (Codomain (Auto ConstantFold)))) => Functor (Auto ConstantFold) (Statement l l) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

Functor (Statement λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: (forall (a :: k). p a -> q a) -> Statement λ l f' p -> Statement λ l f' q #

Foldable (Statement λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: Monoid m => (forall (a :: k). p a -> m) -> Statement λ l f' p -> m #

Traversable (Statement λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: Applicative m => (forall (a :: k). p a -> m (q a)) -> Statement λ l f' p -> m (Statement λ l f' q) #

sequence :: forall m (p :: k -> Type). Applicative m => Statement λ l f' (Compose m p) -> m (Statement λ l f' p) #

Apply (Statement λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<*>) :: forall (p :: k -> Type) (q :: k -> Type). Statement λ l f' (p ~> q) -> Statement λ l f' p -> Statement λ l f' q #

liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Statement λ l f' p -> Statement λ l f' q -> Statement λ l f' r #

liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Statement λ l f' p -> Statement λ l f' q -> Statement λ l f' r -> Statement λ l f' s #

Attribution (Auto ConstantFold) (Statement l l) Sem Placed => At (Auto ConstantFold) (Statement l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

(Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (Designator l l f' f')), Data (f (Expression l l f' f')), Data (f (Case l l f' f')), Data (f (ConditionalBranch l l f' f')), Data (f (StatementSequence l l f' f'))) => Data (Statement λ l f' f) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Statement λ l f' f -> c (Statement λ l f' f) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Statement λ l f' f) #

toConstr :: Statement λ l f' f -> Constr #

dataTypeOf :: Statement λ l f' f -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Statement λ l f' f)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Statement λ l f' f)) #

gmapT :: (forall b. Data b => b -> b) -> Statement λ l f' f -> Statement λ l f' f #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Statement λ l f' f -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Statement λ l f' f -> r #

gmapQ :: (forall d. Data d => d -> u) -> Statement λ l f' f -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Statement λ l f' f -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Statement λ l f' f -> m (Statement λ l f' f) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Statement λ l f' f -> m (Statement λ l f' f) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Statement λ l f' f -> m (Statement λ l f' f) #

(Show (f (Designator l l f' f')), Show (f (Expression l l f' f')), Show (f (Case l l f' f')), Show (f (ConditionalBranch l l f' f')), Show (f (StatementSequence l l f' f'))) => Show (Statement λ l f' f) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

showsPrec :: Int -> Statement λ l f' f -> ShowS #

show :: Statement λ l f' f -> String #

showList :: [Statement λ l f' f] -> ShowS #

(Pretty (ConstExpression l l Identity Identity), Pretty (Designator l l Identity Identity), Pretty (Case l l Identity Identity), Pretty (ConditionalBranch l l Identity Identity), Pretty (WithAlternative l l Identity Identity), Pretty (StatementSequence l l Identity Identity)) => Pretty (Statement Language l Identity Identity) Source # 
Instance details

Defined in Language.Modula2.Pretty

type Atts (Inherited (Auto ConstantFold)) (Statement λ l _1 _2) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

type Atts (Inherited (Auto ConstantFold)) (Statement λ l _1 _2) = InhCF λ
type Atts (Synthesized (Auto ConstantFold)) (Statement λ l _1 _2) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

type Atts (Synthesized (Auto ConstantFold)) (Statement λ l _1 _2) = SynCF' (Statement λ l)

data ProcedureHeading λ l f' f Source #

Constructors

ProcedureHeading Ident (Maybe (f (FormalParameters l l f' f'))) 

Instances

Instances details
(Transformation t, Functor t (FormalParameters l l)) => Functor t (ProcedureHeading λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: t -> ProcedureHeading λ l (Domain t) (Domain t) -> ProcedureHeading λ l (Codomain t) (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (FormalParameters l l)) => Foldable t (ProcedureHeading λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> ProcedureHeading λ l (Domain t) (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (FormalParameters l l)) => Traversable t (ProcedureHeading λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> ProcedureHeading λ l (Domain t) (Domain t) -> m (ProcedureHeading λ l f f) #

(Transformation t, At t (FormalParameters l l f' f')) => Functor t (ProcedureHeading λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: t -> ProcedureHeading λ l f' (Domain t) -> ProcedureHeading λ l f' (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (FormalParameters l l f' f')) => Foldable t (ProcedureHeading λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> ProcedureHeading λ l f' (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (FormalParameters l l f' f')) => Traversable t (ProcedureHeading λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> ProcedureHeading λ l f' (Domain t) -> m (ProcedureHeading λ l f' f) #

(Functor (Auto ConstantFold) (ProcedureHeading l l), At (Auto ConstantFold) (ProcedureHeading l l (Codomain (Auto ConstantFold)) (Codomain (Auto ConstantFold)))) => Functor (Auto ConstantFold) (ProcedureHeading l l) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

Functor (ProcedureHeading λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: (forall (a :: k). p a -> q a) -> ProcedureHeading λ l f' p -> ProcedureHeading λ l f' q #

Foldable (ProcedureHeading λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: Monoid m => (forall (a :: k). p a -> m) -> ProcedureHeading λ l f' p -> m #

Traversable (ProcedureHeading λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: Applicative m => (forall (a :: k). p a -> m (q a)) -> ProcedureHeading λ l f' p -> m (ProcedureHeading λ l f' q) #

sequence :: forall m (p :: k -> Type). Applicative m => ProcedureHeading λ l f' (Compose m p) -> m (ProcedureHeading λ l f' p) #

Apply (ProcedureHeading λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<*>) :: forall (p :: k -> Type) (q :: k -> Type). ProcedureHeading λ l f' (p ~> q) -> ProcedureHeading λ l f' p -> ProcedureHeading λ l f' q #

liftA2 :: (forall (a :: k). p a -> q a -> r a) -> ProcedureHeading λ l f' p -> ProcedureHeading λ l f' q -> ProcedureHeading λ l f' r #

liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> ProcedureHeading λ l f' p -> ProcedureHeading λ l f' q -> ProcedureHeading λ l f' r -> ProcedureHeading λ l f' s #

Attribution (Auto ConstantFold) (ProcedureHeading l l) Sem Placed => At (Auto ConstantFold) (ProcedureHeading l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

(Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (FormalParameters l l f' f'))) => Data (ProcedureHeading λ l f' f) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ProcedureHeading λ l f' f -> c (ProcedureHeading λ l f' f) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (ProcedureHeading λ l f' f) #

toConstr :: ProcedureHeading λ l f' f -> Constr #

dataTypeOf :: ProcedureHeading λ l f' f -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (ProcedureHeading λ l f' f)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (ProcedureHeading λ l f' f)) #

gmapT :: (forall b. Data b => b -> b) -> ProcedureHeading λ l f' f -> ProcedureHeading λ l f' f #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ProcedureHeading λ l f' f -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ProcedureHeading λ l f' f -> r #

gmapQ :: (forall d. Data d => d -> u) -> ProcedureHeading λ l f' f -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ProcedureHeading λ l f' f -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ProcedureHeading λ l f' f -> m (ProcedureHeading λ l f' f) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ProcedureHeading λ l f' f -> m (ProcedureHeading λ l f' f) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ProcedureHeading λ l f' f -> m (ProcedureHeading λ l f' f) #

Show (f (FormalParameters l l f' f')) => Show (ProcedureHeading λ l f' f) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

showsPrec :: Int -> ProcedureHeading λ l f' f -> ShowS #

show :: ProcedureHeading λ l f' f -> String #

showList :: [ProcedureHeading λ l f' f] -> ShowS #

(Pretty (IdentDef l), Pretty (FormalParameters l l Identity Identity), Pretty (Type l l Identity Identity)) => Pretty (ProcedureHeading l l Identity Identity) Source # 
Instance details

Defined in Language.Modula2.Pretty

type Atts (Inherited (Auto ConstantFold)) (ProcedureHeading λ l _1 _2) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

type Atts (Synthesized (Auto ConstantFold)) (ProcedureHeading λ l _1 _2) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

data Variant λ l f' f Source #

Constructors

Variant (f (CaseLabels l l f' f')) (ZipList (f (CaseLabels l l f' f'))) (ZipList (f (FieldList l l f' f'))) 

Instances

Instances details
(Transformation t, Functor t (CaseLabels l l), Functor t (CaseLabels l l), Functor t (FieldList l l)) => Functor t (Variant λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: t -> Variant λ l (Domain t) (Domain t) -> Variant λ l (Codomain t) (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (CaseLabels l l), Foldable t (CaseLabels l l), Foldable t (FieldList l l)) => Foldable t (Variant λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> Variant λ l (Domain t) (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (CaseLabels l l), Traversable t (CaseLabels l l), Traversable t (FieldList l l)) => Traversable t (Variant λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> Variant λ l (Domain t) (Domain t) -> m (Variant λ l f f) #

(Transformation t, At t (CaseLabels l l f' f'), At t (CaseLabels l l f' f'), At t (FieldList l l f' f')) => Functor t (Variant λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: t -> Variant λ l f' (Domain t) -> Variant λ l f' (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (CaseLabels l l f' f'), At t (CaseLabels l l f' f'), At t (FieldList l l f' f')) => Foldable t (Variant λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> Variant λ l f' (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (CaseLabels l l f' f'), At t (CaseLabels l l f' f'), At t (FieldList l l f' f')) => Traversable t (Variant λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> Variant λ l f' (Domain t) -> m (Variant λ l f' f) #

(Functor (Auto ConstantFold) (Variant l l), At (Auto ConstantFold) (Variant l l (Codomain (Auto ConstantFold)) (Codomain (Auto ConstantFold)))) => Functor (Auto ConstantFold) (Variant l l) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

Functor (Variant λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: (forall (a :: k). p a -> q a) -> Variant λ l f' p -> Variant λ l f' q #

Foldable (Variant λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: Monoid m => (forall (a :: k). p a -> m) -> Variant λ l f' p -> m #

Traversable (Variant λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: Applicative m => (forall (a :: k). p a -> m (q a)) -> Variant λ l f' p -> m (Variant λ l f' q) #

sequence :: forall m (p :: k -> Type). Applicative m => Variant λ l f' (Compose m p) -> m (Variant λ l f' p) #

Apply (Variant λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<*>) :: forall (p :: k -> Type) (q :: k -> Type). Variant λ l f' (p ~> q) -> Variant λ l f' p -> Variant λ l f' q #

liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Variant λ l f' p -> Variant λ l f' q -> Variant λ l f' r #

liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Variant λ l f' p -> Variant λ l f' q -> Variant λ l f' r -> Variant λ l f' s #

Attribution (Auto ConstantFold) (Variant l l) Sem Placed => At (Auto ConstantFold) (Variant l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

(Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (CaseLabels l l f' f')), Data (f (FieldList l l f' f'))) => Data (Variant λ l f' f) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Variant λ l f' f -> c (Variant λ l f' f) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Variant λ l f' f) #

toConstr :: Variant λ l f' f -> Constr #

dataTypeOf :: Variant λ l f' f -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Variant λ l f' f)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Variant λ l f' f)) #

gmapT :: (forall b. Data b => b -> b) -> Variant λ l f' f -> Variant λ l f' f #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Variant λ l f' f -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Variant λ l f' f -> r #

gmapQ :: (forall d. Data d => d -> u) -> Variant λ l f' f -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Variant λ l f' f -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Variant λ l f' f -> m (Variant λ l f' f) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Variant λ l f' f -> m (Variant λ l f' f) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Variant λ l f' f -> m (Variant λ l f' f) #

(Show (f (CaseLabels l l f' f')), Show (f (FieldList l l f' f'))) => Show (Variant λ l f' f) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

showsPrec :: Int -> Variant λ l f' f -> ShowS #

show :: Variant λ l f' f -> String #

showList :: [Variant λ l f' f] -> ShowS #

(Pretty (CaseLabels l l Identity Identity), Pretty (FieldList l l Identity Identity)) => Pretty (Variant λ l Identity Identity) Source # 
Instance details

Defined in Language.Modula2.Pretty

Methods

pretty :: Variant λ l Identity Identity -> Doc ann #

prettyList :: [Variant λ l Identity Identity] -> Doc ann #

type Atts (Inherited (Auto ConstantFold)) (Variant λ l _1 _2) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

type Atts (Inherited (Auto ConstantFold)) (Variant λ l _1 _2) = InhCF λ
type Atts (Synthesized (Auto ConstantFold)) (Variant λ l _1 _2) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

type Atts (Synthesized (Auto ConstantFold)) (Variant λ l _1 _2) = SynCF' (Variant λ l)

data FieldList λ l f' f Source #

Constructors

FieldList (IdentList l) (f (Type l l f' f')) 
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'))) 

Instances

Instances details
(Transformation t, Functor t (Type l l), Functor t (Variant l l), Functor t (Variant l l), Functor t (FieldList l l)) => Functor t (FieldList λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: t -> FieldList λ l (Domain t) (Domain t) -> FieldList λ l (Codomain t) (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Type l l), Foldable t (Variant l l), Foldable t (Variant l l), Foldable t (FieldList l l)) => Foldable t (FieldList λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> FieldList λ l (Domain t) (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (Type l l), Traversable t (Variant l l), Traversable t (Variant l l), Traversable t (FieldList l l)) => Traversable t (FieldList λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> FieldList λ l (Domain t) (Domain t) -> m (FieldList λ l f f) #

(Transformation t, At t (Type l l f' f'), At t (Variant l l f' f'), At t (Variant l l f' f'), At t (FieldList l l f' f')) => Functor t (FieldList λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: t -> FieldList λ l f' (Domain t) -> FieldList λ l f' (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Type l l f' f'), At t (Variant l l f' f'), At t (Variant l l f' f'), At t (FieldList l l f' f')) => Foldable t (FieldList λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> FieldList λ l f' (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (Type l l f' f'), At t (Variant l l f' f'), At t (Variant l l f' f'), At t (FieldList l l f' f')) => Traversable t (FieldList λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> FieldList λ l f' (Domain t) -> m (FieldList λ l f' f) #

(Functor (Auto ConstantFold) (FieldList l l), At (Auto ConstantFold) (FieldList l l (Codomain (Auto ConstantFold)) (Codomain (Auto ConstantFold)))) => Functor (Auto ConstantFold) (FieldList l l) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

Functor (FieldList λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: (forall (a :: k). p a -> q a) -> FieldList λ l f' p -> FieldList λ l f' q #

Foldable (FieldList λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: Monoid m => (forall (a :: k). p a -> m) -> FieldList λ l f' p -> m #

Traversable (FieldList λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: Applicative m => (forall (a :: k). p a -> m (q a)) -> FieldList λ l f' p -> m (FieldList λ l f' q) #

sequence :: forall m (p :: k -> Type). Applicative m => FieldList λ l f' (Compose m p) -> m (FieldList λ l f' p) #

Apply (FieldList λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<*>) :: forall (p :: k -> Type) (q :: k -> Type). FieldList λ l f' (p ~> q) -> FieldList λ l f' p -> FieldList λ l f' q #

liftA2 :: (forall (a :: k). p a -> q a -> r a) -> FieldList λ l f' p -> FieldList λ l f' q -> FieldList λ l f' r #

liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> FieldList λ l f' p -> FieldList λ l f' q -> FieldList λ l f' r -> FieldList λ l f' s #

Attribution (Auto ConstantFold) (FieldList l l) Sem Placed => At (Auto ConstantFold) (FieldList l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

(Typeable λ, Typeable l, Typeable f, Typeable f', Data (QualIdent l), Data (IdentList l), Data (f (Type l l f' f')), Data (f (Expression l l f' f')), Data (f (Variant l l f' f')), Data (f (FieldList l l f' f'))) => Data (FieldList λ l f' f) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FieldList λ l f' f -> c (FieldList λ l f' f) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (FieldList λ l f' f) #

toConstr :: FieldList λ l f' f -> Constr #

dataTypeOf :: FieldList λ l f' f -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (FieldList λ l f' f)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (FieldList λ l f' f)) #

gmapT :: (forall b. Data b => b -> b) -> FieldList λ l f' f -> FieldList λ l f' f #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FieldList λ l f' f -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FieldList λ l f' f -> r #

gmapQ :: (forall d. Data d => d -> u) -> FieldList λ l f' f -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> FieldList λ l f' f -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> FieldList λ l f' f -> m (FieldList λ l f' f) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FieldList λ l f' f -> m (FieldList λ l f' f) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FieldList λ l f' f -> m (FieldList λ l f' f) #

(Show (QualIdent l), Show (IdentList l), Show (f (Type l l f' f')), Show (f (Expression l l f' f')), Show (f (Variant l l f' f')), Show (f (FieldList l l f' f'))) => Show (FieldList λ l f' f) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

showsPrec :: Int -> FieldList λ l f' f -> ShowS #

show :: FieldList λ l f' f -> String #

showList :: [FieldList λ l f' f] -> ShowS #

(Pretty (IdentDef l), Pretty (QualIdent l), Pretty (Type l l Identity Identity), Pretty (Value l l Identity Identity), Pretty (FieldList l l Identity Identity), Pretty (Variant l l Identity Identity)) => Pretty (FieldList Language l Identity Identity) Source # 
Instance details

Defined in Language.Modula2.Pretty

(Pretty (IdentDef l), Pretty (QualIdent l), Pretty (Type l l Identity Identity), Pretty (Value l l Identity Identity), Pretty (FieldList l l Identity Identity), Pretty (Variant l l Identity Identity)) => Pretty (FieldList Language l Identity Identity) Source # 
Instance details

Defined in Language.Modula2.ISO.Pretty

type Atts (Inherited (Auto ConstantFold)) (FieldList λ l _1 _2) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

type Atts (Inherited (Auto ConstantFold)) (FieldList λ l _1 _2) = InhCF λ
type Atts (Synthesized (Auto ConstantFold)) (FieldList λ l _1 _2) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

type Atts (Synthesized (Auto ConstantFold)) (FieldList λ l _1 _2) = SynCF' (FieldList λ l)

data Type λ l f' f Source #

Constructors

TypeReference (QualIdent l) 
ArrayType (ZipList (f (Type l l f' f'))) (f (Type l l f' f')) 
EnumerationType (IdentList l) 
SubrangeType (Maybe (QualIdent l)) (f (ConstExpression l l f' f')) (f (ConstExpression l l f' f')) 
SetType (f (Type l l f' f')) 
RecordType (ZipList (f (FieldList l l f' f'))) 
PointerType (f (Type l l f' f')) 
ProcedureType (Maybe (f (FormalParameters l l f' f'))) 

Instances

Instances details
(Transformation t, Functor t (Type l l), Functor t (Type l l), Functor t (ConstExpression l l), Functor t (ConstExpression l l), Functor t (Type l l), Functor t (FieldList l l), Functor t (Type l l), Functor t (FormalParameters l l)) => Functor t (Type λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: t -> Type λ l (Domain t) (Domain t) -> Type λ l (Codomain t) (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Type l l), Foldable t (Type l l), Foldable t (ConstExpression l l), Foldable t (ConstExpression l l), Foldable t (Type l l), Foldable t (FieldList l l), Foldable t (Type l l), Foldable t (FormalParameters l l)) => Foldable t (Type λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> Type λ l (Domain t) (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (Type l l), Traversable t (Type l l), Traversable t (ConstExpression l l), Traversable t (ConstExpression l l), Traversable t (Type l l), Traversable t (FieldList l l), Traversable t (Type l l), Traversable t (FormalParameters l l)) => Traversable t (Type λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: forall m (f :: Type0 -> Type0). Codomain t ~ Compose m f => t -> Type λ l (Domain t) (Domain t) -> m (Type λ l f f) #

(Transformation t, At t (Type l l f' f'), At t (Type l l f' f'), At t (ConstExpression l l f' f'), At t (ConstExpression l l f' f'), At t (Type l l f' f'), At t (FieldList l l f' f'), At t (Type l l f' f'), At t (FormalParameters l l f' f')) => Functor t (Type λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: t -> Type λ l f' (Domain t) -> Type λ l f' (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Type l l f' f'), At t (Type l l f' f'), At t (ConstExpression l l f' f'), At t (ConstExpression l l f' f'), At t (Type l l f' f'), At t (FieldList l l f' f'), At t (Type l l f' f'), At t (FormalParameters l l f' f')) => Foldable t (Type λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> Type λ l f' (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (Type l l f' f'), At t (Type l l f' f'), At t (ConstExpression l l f' f'), At t (ConstExpression l l f' f'), At t (Type l l f' f'), At t (FieldList l l f' f'), At t (Type l l f' f'), At t (FormalParameters l l f' f')) => Traversable t (Type λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: forall m (f :: Type0 -> Type0). Codomain t ~ Compose m f => t -> Type λ l f' (Domain t) -> m (Type λ l f' f) #

(Functor (Auto ConstantFold) (Type l l), At (Auto ConstantFold) (Type l l (Codomain (Auto ConstantFold)) (Codomain (Auto ConstantFold)))) => Functor (Auto ConstantFold) (Type l l) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

Functor (Type λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: (forall (a :: k). p a -> q a) -> Type λ l f' p -> Type λ l f' q #

Foldable (Type λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: Monoid m => (forall (a :: k). p a -> m) -> Type λ l f' p -> m #

Traversable (Type λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: Applicative m => (forall (a :: k). p a -> m (q a)) -> Type λ l f' p -> m (Type λ l f' q) #

sequence :: forall m (p :: k -> Type0). Applicative m => Type λ l f' (Compose m p) -> m (Type λ l f' p) #

Apply (Type λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<*>) :: forall (p :: k -> Type0) (q :: k -> Type0). Type λ l f' (p ~> q) -> Type λ l f' p -> Type λ l f' q #

liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Type λ l f' p -> Type λ l f' q -> Type λ l f' r #

liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Type λ l f' p -> Type λ l f' q -> Type λ l f' r -> Type λ l f' s #

Attribution (Auto ConstantFold) (Type l l) Sem Placed => At (Auto ConstantFold) (Type l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

(Typeable λ, Typeable l, Typeable f, Typeable f', Data (QualIdent l), Data (IdentList l), Data (f (Type l l f' f')), Data (f (ConstExpression l l f' f')), Data (f (FormalParameters l l f' f')), Data (f (FieldList l l f' f'))) => Data (Type λ l f' f) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Type λ l f' f -> c (Type λ l f' f) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Type λ l f' f) #

toConstr :: Type λ l f' f -> Constr #

dataTypeOf :: Type λ l f' f -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Type λ l f' f)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Type λ l f' f)) #

gmapT :: (forall b. Data b => b -> b) -> Type λ l f' f -> Type λ l f' f #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Type λ l f' f -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Type λ l f' f -> r #

gmapQ :: (forall d. Data d => d -> u) -> Type λ l f' f -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Type λ l f' f -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Type λ l f' f -> m (Type λ l f' f) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Type λ l f' f -> m (Type λ l f' f) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Type λ l f' f -> m (Type λ l f' f) #

(Show (QualIdent l), Show (IdentList l), Show (f (Type l l f' f')), Show (f (ConstExpression l l f' f')), Show (f (FormalParameters l l f' f')), Show (f (FieldList l l f' f'))) => Show (Type λ l f' f) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

showsPrec :: Int -> Type λ l f' f -> ShowS #

show :: Type λ l f' f -> String #

showList :: [Type λ l f' f] -> ShowS #

(Pretty (IdentDef l), Pretty (FormalParameters l l Identity Identity), Pretty (FieldList l l Identity Identity), Pretty (ConstExpression l l Identity Identity), Pretty (Type l l Identity Identity), Pretty (BaseType l)) => Pretty (Type Language l Identity Identity) Source # 
Instance details

Defined in Language.Modula2.Pretty

type Atts (Inherited (Auto ConstantFold)) (Type λ l _1 _2) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

type Atts (Inherited (Auto ConstantFold)) (Type λ l _1 _2) = InhCF λ
type Atts (Synthesized (Auto ConstantFold)) (Type λ l _1 _2) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

type Atts (Synthesized (Auto ConstantFold)) (Type λ l _1 _2) = SynCF' (Type λ l)

data Designator λ l f' f Source #

Constructors

Variable (QualIdent l) 
Field (f (Designator l l f' f')) Ident 
Index (f (Designator l l f' f')) (f (Expression l l f' f')) (ZipList (f (Expression l l f' f'))) 
Dereference (f (Designator l l f' f')) 

Instances

Instances details
(Transformation t, Functor t (Designator l l), Functor t (Designator l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Designator l l)) => Functor t (Designator λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: t -> Designator λ l (Domain t) (Domain t) -> Designator λ l (Codomain t) (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Designator l l), Foldable t (Designator l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Designator l l)) => Foldable t (Designator λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> Designator λ l (Domain t) (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (Designator l l), Traversable t (Designator l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Designator l l)) => Traversable t (Designator λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> Designator λ l (Domain t) (Domain t) -> m (Designator λ l f f) #

(Transformation t, At t (Designator l l f' f'), At t (Designator l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Designator l l f' f')) => Functor t (Designator λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: t -> Designator λ l f' (Domain t) -> Designator λ l f' (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Designator l l f' f'), At t (Designator l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Designator l l f' f')) => Foldable t (Designator λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> Designator λ l f' (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (Designator l l f' f'), At t (Designator l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Designator l l f' f')) => Traversable t (Designator λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> Designator λ l f' (Domain t) -> m (Designator λ l f' f) #

(Functor (Auto ConstantFold) (Designator l l), At (Auto ConstantFold) (Designator l l (Codomain (Auto ConstantFold)) (Codomain (Auto ConstantFold)))) => Functor (Auto ConstantFold) (Designator l l) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

Functor (Designator λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: (forall (a :: k). p a -> q a) -> Designator λ l f' p -> Designator λ l f' q #

Foldable (Designator λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: Monoid m => (forall (a :: k). p a -> m) -> Designator λ l f' p -> m #

Traversable (Designator λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: Applicative m => (forall (a :: k). p a -> m (q a)) -> Designator λ l f' p -> m (Designator λ l f' q) #

sequence :: forall m (p :: k -> Type). Applicative m => Designator λ l f' (Compose m p) -> m (Designator λ l f' p) #

Apply (Designator λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<*>) :: forall (p :: k -> Type) (q :: k -> Type). Designator λ l f' (p ~> q) -> Designator λ l f' p -> Designator λ l f' q #

liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Designator λ l f' p -> Designator λ l f' q -> Designator λ l f' r #

liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Designator λ l f' p -> Designator λ l f' q -> Designator λ l f' r -> Designator λ l f' s #

Attribution (Auto ConstantFold) (Designator l l) Sem Placed => At (Auto ConstantFold) (Designator l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

(Eq (QualIdent l), Eq (f (Designator l l f' f')), Eq (f (Expression l l f' f'))) => Eq (Designator λ l f' f) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(==) :: Designator λ l f' f -> Designator λ l f' f -> Bool #

(/=) :: Designator λ l f' f -> Designator λ l f' f -> Bool #

(Typeable λ, Typeable l, Typeable f, Typeable f', Data (QualIdent l), Data (f (Designator l l f' f')), Data (f (Expression l l f' f'))) => Data (Designator λ l f' f) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Designator λ l f' f -> c (Designator λ l f' f) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Designator λ l f' f) #

toConstr :: Designator λ l f' f -> Constr #

dataTypeOf :: Designator λ l f' f -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Designator λ l f' f)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Designator λ l f' f)) #

gmapT :: (forall b. Data b => b -> b) -> Designator λ l f' f -> Designator λ l f' f #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Designator λ l f' f -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Designator λ l f' f -> r #

gmapQ :: (forall d. Data d => d -> u) -> Designator λ l f' f -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Designator λ l f' f -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Designator λ l f' f -> m (Designator λ l f' f) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Designator λ l f' f -> m (Designator λ l f' f) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Designator λ l f' f -> m (Designator λ l f' f) #

(Show (QualIdent l), Show (f (Designator l l f' f')), Show (f (Expression l l f' f'))) => Show (Designator λ l f' f) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

showsPrec :: Int -> Designator λ l f' f -> ShowS #

show :: Designator λ l f' f -> String #

showList :: [Designator λ l f' f] -> ShowS #

(Pretty (QualIdent l), Pretty (Designator l l Identity Identity), Pretty (Expression l l Identity Identity)) => Pretty (Designator Language l Identity Identity) Source # 
Instance details

Defined in Language.Modula2.Pretty

(Pretty (QualIdent l), Pretty (Designator l l Identity Identity), Pretty (Expression l l Identity Identity)) => Pretty (Designator Language l Identity Identity) Source # 
Instance details

Defined in Language.Modula2.ISO.Pretty

type Atts (Inherited (Auto ConstantFold)) (Designator λ l _1 _2) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

type Atts (Inherited (Auto ConstantFold)) (Designator λ l _1 _2) = InhCF λ
type Atts (Synthesized (Auto ConstantFold)) (Designator λ l _1 _2) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

data Expression λ l f' f Source #

Constructors

Relation RelOp (f (Expression l l f' f')) (f (Expression l l f' f')) 
Positive (f (Expression l l f' f')) 
Negative (f (Expression l l f' f')) 
Add (f (Expression l l f' f')) (f (Expression l l f' f')) 
Subtract (f (Expression l l f' f')) (f (Expression l l f' f')) 
Or (f (Expression l l f' f')) (f (Expression l l f' f')) 
Multiply (f (Expression l l f' f')) (f (Expression l l f' f')) 
Divide (f (Expression l l f' f')) (f (Expression l l f' f')) 
IntegerDivide (f (Expression l l f' f')) (f (Expression l l f' f')) 
Modulo (f (Expression l l f' f')) (f (Expression l l f' f')) 
And (f (Expression l l f' f')) (f (Expression l l f' f')) 
Set (Maybe (QualIdent l)) (ZipList (f (Element l l f' f'))) 
Read (f (Designator l l f' f')) 
FunctionCall (f (Designator l l f' f')) (ZipList (f (Expression l l f' f'))) 
Not (f (Expression l l f' f')) 
Literal (f (Value l l f' f')) 

Instances

Instances details
(Transformation t, Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Element l l), Functor t (Designator l l), Functor t (Designator l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Value l l)) => Functor t (Expression λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: t -> Expression λ l (Domain t) (Domain t) -> Expression λ l (Codomain t) (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Element l l), Foldable t (Designator l l), Foldable t (Designator l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Value l l)) => Foldable t (Expression λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> Expression λ l (Domain t) (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Element l l), Traversable t (Designator l l), Traversable t (Designator l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Value l l)) => Traversable t (Expression λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> Expression λ l (Domain t) (Domain t) -> m (Expression λ l f f) #

(Transformation t, At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Element l l f' f'), At t (Designator l l f' f'), At t (Designator l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Value l l f' f')) => Functor t (Expression λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: t -> Expression λ l f' (Domain t) -> Expression λ l f' (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Element l l f' f'), At t (Designator l l f' f'), At t (Designator l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Value l l f' f')) => Foldable t (Expression λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> Expression λ l f' (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Element l l f' f'), At t (Designator l l f' f'), At t (Designator l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Value l l f' f')) => Traversable t (Expression λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> Expression λ l f' (Domain t) -> m (Expression λ l f' f) #

(Pretty (Precedence (Expression l l Identity Identity)), Pretty (Value l l Identity Identity), Pretty (Expression l l Identity Identity), Pretty (Element l l Identity Identity), Pretty (Designator l l Identity Identity), Pretty (QualIdent l)) => Pretty (Precedence (Expression Language l Identity Identity)) Source # 
Instance details

Defined in Language.Modula2.Pretty

(Functor (Auto ConstantFold) (Expression l l), At (Auto ConstantFold) (Expression l l (Codomain (Auto ConstantFold)) (Codomain (Auto ConstantFold)))) => Functor (Auto ConstantFold) (Expression l l) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

Functor (Expression λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: (forall (a :: k). p a -> q a) -> Expression λ l f' p -> Expression λ l f' q #

Foldable (Expression λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: Monoid m => (forall (a :: k). p a -> m) -> Expression λ l f' p -> m #

Traversable (Expression λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: Applicative m => (forall (a :: k). p a -> m (q a)) -> Expression λ l f' p -> m (Expression λ l f' q) #

sequence :: forall m (p :: k -> Type). Applicative m => Expression λ l f' (Compose m p) -> m (Expression λ l f' p) #

Apply (Expression λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<*>) :: forall (p :: k -> Type) (q :: k -> Type). Expression λ l f' (p ~> q) -> Expression λ l f' p -> Expression λ l f' q #

liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Expression λ l f' p -> Expression λ l f' q -> Expression λ l f' r #

liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Expression λ l f' p -> Expression λ l f' q -> Expression λ l f' r -> Expression λ l f' s #

Attribution (Auto ConstantFold) (Expression l l) Sem Placed => At (Auto ConstantFold) (Expression l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

(Eq (QualIdent l), Eq (f (Designator l l f' f')), Eq (f (Element l l f' f')), Eq (f (Value l l f' f')), Eq (f (Expression l l f' f'))) => Eq (Expression λ l f' f) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(==) :: Expression λ l f' f -> Expression λ l f' f -> Bool #

(/=) :: Expression λ l f' f -> Expression λ l f' f -> Bool #

(Typeable λ, Typeable l, Typeable f, Typeable f', Data (QualIdent l), Data (f (Designator l l f' f')), Data (f (Element l l f' f')), Data (f (Value l l f' f')), Data (f (Expression l l f' f'))) => Data (Expression λ l f' f) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Expression λ l f' f -> c (Expression λ l f' f) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Expression λ l f' f) #

toConstr :: Expression λ l f' f -> Constr #

dataTypeOf :: Expression λ l f' f -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Expression λ l f' f)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Expression λ l f' f)) #

gmapT :: (forall b. Data b => b -> b) -> Expression λ l f' f -> Expression λ l f' f #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Expression λ l f' f -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Expression λ l f' f -> r #

gmapQ :: (forall d. Data d => d -> u) -> Expression λ l f' f -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Expression λ l f' f -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Expression λ l f' f -> m (Expression λ l f' f) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Expression λ l f' f -> m (Expression λ l f' f) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Expression λ l f' f -> m (Expression λ l f' f) #

(Show (QualIdent l), Show (f (Designator l l f' f')), Show (f (Element l l f' f')), Show (f (Value l l f' f')), Show (f (Expression l l f' f'))) => Show (Expression λ l f' f) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

showsPrec :: Int -> Expression λ l f' f -> ShowS #

show :: Expression λ l f' f -> String #

showList :: [Expression λ l f' f] -> ShowS #

(Pretty (Precedence (Expression l l Identity Identity)), Pretty (Value l l Identity Identity), Pretty (Expression l l Identity Identity), Pretty (Element l l Identity Identity), Pretty (Designator l l Identity Identity), Pretty (QualIdent l)) => Pretty (Expression Language l Identity Identity) Source # 
Instance details

Defined in Language.Modula2.Pretty

type Atts (Inherited (Auto ConstantFold)) (Expression λ l _1 _2) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

type Atts (Inherited (Auto ConstantFold)) (Expression λ l _1 _2) = InhCF λ
type Atts (Synthesized (Auto ConstantFold)) (Expression λ l _1 _2) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

type Atts (Synthesized (Auto ConstantFold)) (Expression λ l _1 _2) = SynCFExp λ l

data QualIdent l Source #

Constructors

QualIdent [Ident] Ident 

Instances

Instances details
Eq (QualIdent l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(==) :: QualIdent l -> QualIdent l -> Bool #

(/=) :: QualIdent l -> QualIdent l -> Bool #

Data l => Data (QualIdent l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> QualIdent l -> c (QualIdent l) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (QualIdent l) #

toConstr :: QualIdent l -> Constr #

dataTypeOf :: QualIdent l -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (QualIdent l)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (QualIdent l)) #

gmapT :: (forall b. Data b => b -> b) -> QualIdent l -> QualIdent l #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> QualIdent l -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> QualIdent l -> r #

gmapQ :: (forall d. Data d => d -> u) -> QualIdent l -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> QualIdent l -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> QualIdent l -> m (QualIdent l) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> QualIdent l -> m (QualIdent l) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> QualIdent l -> m (QualIdent l) #

Ord (QualIdent l) Source # 
Instance details

Defined in Language.Modula2.AST

Show (QualIdent l) Source # 
Instance details

Defined in Language.Modula2.AST

Pretty (QualIdent l) Source # 
Instance details

Defined in Language.Modula2.Pretty

Methods

pretty :: QualIdent l -> Doc ann #

prettyList :: [QualIdent l] -> Doc ann #

data Declaration (full :: Bool) λ l (f' :: * -> *) (f :: * -> *) where Source #

Constructors

ConstantDeclaration :: IdentDef l -> f (ConstExpression l l f' f') -> Declaration x λ l f' f 
TypeDeclaration :: IdentDef l -> f (Type l l f' f') -> Declaration x λ l f' f 
OpaqueTypeDeclaration :: IdentDef l -> Declaration False λ l f' f 
VariableDeclaration :: IdentList l -> f (Type l l f' f') -> Declaration x λ l f' f 
ProcedureDeclaration :: f (ProcedureHeading l l f' f') -> f (Block l l f' f') -> Declaration True λ l f' f 
ProcedureDefinition :: f (ProcedureHeading l l f' f') -> Declaration False λ l f' f 
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 

Instances

Instances details
(Transformation t, Functor t (ConstExpression l l), Functor t (Type l l), Functor t (Type l l), Functor t (ProcedureHeading l l), Functor t (Block l l), Functor t (ProcedureHeading l l), Functor t (Priority l l), Functor t (Block l l)) => Functor t (Declaration full λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: t -> Declaration full λ l (Domain t) (Domain t) -> Declaration full λ l (Codomain t) (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (ConstExpression l l), Foldable t (Type l l), Foldable t (Type l l), Foldable t (ProcedureHeading l l), Foldable t (Block l l), Foldable t (ProcedureHeading l l), Foldable t (Priority l l), Foldable t (Block l l)) => Foldable t (Declaration full λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> Declaration full λ l (Domain t) (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (ConstExpression l l), Traversable t (Type l l), Traversable t (Type l l), Traversable t (ProcedureHeading l l), Traversable t (Block l l), Traversable t (ProcedureHeading l l), Traversable t (Priority l l), Traversable t (Block l l)) => Traversable t (Declaration full λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> Declaration full λ l (Domain t) (Domain t) -> m (Declaration full λ l f f) #

(Transformation t, At t (ConstExpression l l f' f'), At t (Type l l f' f'), At t (Type l l f' f'), At t (ProcedureHeading l l f' f'), At t (Block l l f' f'), At t (ProcedureHeading l l f' f'), At t (Priority l l f' f'), At t (Block l l f' f')) => Functor t (Declaration full λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: t -> Declaration full λ l f' (Domain t) -> Declaration full λ l f' (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (ConstExpression l l f' f'), At t (Type l l f' f'), At t (Type l l f' f'), At t (ProcedureHeading l l f' f'), At t (Block l l f' f'), At t (ProcedureHeading l l f' f'), At t (Priority l l f' f'), At t (Block l l f' f')) => Foldable t (Declaration full λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> Declaration full λ l f' (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (ConstExpression l l f' f'), At t (Type l l f' f'), At t (Type l l f' f'), At t (ProcedureHeading l l f' f'), At t (Block l l f' f'), At t (ProcedureHeading l l f' f'), At t (Priority l l f' f'), At t (Block l l f' f')) => Traversable t (Declaration full λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> Declaration full λ l f' (Domain t) -> m (Declaration full λ l f' f) #

(Functor (Auto ConstantFold) (Declaration full l l), At (Auto ConstantFold) (Declaration full l l (Codomain (Auto ConstantFold)) (Codomain (Auto ConstantFold)))) => Functor (Auto ConstantFold) (Declaration full l l) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

Functor (Declaration full λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: (forall (a :: k). p a -> q a) -> Declaration full λ l f' p -> Declaration full λ l f' q #

Foldable (Declaration full λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: Monoid m => (forall (a :: k). p a -> m) -> Declaration full λ l f' p -> m #

Traversable (Declaration full λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: Applicative m => (forall (a :: k). p a -> m (q a)) -> Declaration full λ l f' p -> m (Declaration full λ l f' q) #

sequence :: forall m (p :: k -> Type). Applicative m => Declaration full λ l f' (Compose m p) -> m (Declaration full λ l f' p) #

Apply (Declaration full λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<*>) :: forall (p :: k -> Type) (q :: k -> Type). Declaration full λ l f' (p ~> q) -> Declaration full λ l f' p -> Declaration full λ l f' q #

liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Declaration full λ l f' p -> Declaration full λ l f' q -> Declaration full λ l f' r #

liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Declaration full λ l f' p -> Declaration full λ l f' q -> Declaration full λ l f' r -> Declaration full λ l f' s #

Attribution (Auto ConstantFold) (Declaration full l l) Sem Placed => At (Auto ConstantFold) (Declaration full l l Sem Sem) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

(Show (Export l), Show (Import l), Show (f (Type l l f' f')), Show (f (ConstExpression l l f' f')), Show (f (FormalParameters l l f' f')), Show (f (ProcedureHeading l l f' f')), Show (f (Block l l f' f')), Show (f (Block l l f' f')), Show (IdentDef l)) => Show (Declaration λ x l f' f) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

showsPrec :: Int -> Declaration λ x l f' f -> ShowS #

show :: Declaration λ x l f' f -> String #

showList :: [Declaration λ x l f' f] -> ShowS #

(Nameable l, Pretty (IdentDef l), Pretty (Export l), Pretty (Import l), Pretty (Type l l Identity Identity), Pretty (Declaration l l Identity Identity), Pretty (Expression l l Identity Identity), Pretty (FormalParameters l l Identity Identity), Pretty (ProcedureHeading l l Identity Identity), Pretty (Block l l Identity Identity)) => Pretty (Declaration 'False Language l Identity Identity) Source # 
Instance details

Defined in Language.Modula2.Pretty

(Nameable l, Pretty (IdentDef l), Pretty (Export l), Pretty (Import l), Pretty (Type l l Identity Identity), Pretty (Declaration l l Identity Identity), Pretty (Expression l l Identity Identity), Pretty (FormalParameters l l Identity Identity), Pretty (ProcedureHeading l l Identity Identity), Pretty (Block l l Identity Identity)) => Pretty (Declaration 'True Language l Identity Identity) Source # 
Instance details

Defined in Language.Modula2.Pretty

type Atts (Inherited (Auto ConstantFold)) (Declaration full λ l _1 _2) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

type Atts (Inherited (Auto ConstantFold)) (Declaration full λ l _1 _2) = InhCF λ
type Atts (Synthesized (Auto ConstantFold)) (Declaration full λ l _1 _2) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

type Atts (Synthesized (Auto ConstantFold)) (Declaration full λ l _1 _2) = SynCFMod' l (Declaration full λ l)

data Export λ Source #

Constructors

Export Bool (NonEmpty Ident) 

Instances

Instances details
Data λ => Data (Export λ) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Export λ -> c (Export λ) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Export λ) #

toConstr :: Export λ -> Constr #

dataTypeOf :: Export λ -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Export λ)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Export λ)) #

gmapT :: (forall b. Data b => b -> b) -> Export λ -> Export λ #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Export λ -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Export λ -> r #

gmapQ :: (forall d. Data d => d -> u) -> Export λ -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Export λ -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Export λ -> m (Export λ) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Export λ -> m (Export λ) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Export λ -> m (Export λ) #

Show (Export λ) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

showsPrec :: Int -> Export λ -> ShowS #

show :: Export λ -> String #

showList :: [Export λ] -> ShowS #

Pretty (IdentDef l) => Pretty (Export l) Source # 
Instance details

Defined in Language.Modula2.Pretty

Methods

pretty :: Export l -> Doc ann #

prettyList :: [Export l] -> Doc ann #

data Import λ Source #

Constructors

Import (Maybe Ident) (NonEmpty Ident) 

Instances

Instances details
Data λ => Data (Import λ) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Import λ -> c (Import λ) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Import λ) #

toConstr :: Import λ -> Constr #

dataTypeOf :: Import λ -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Import λ)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Import λ)) #

gmapT :: (forall b. Data b => b -> b) -> Import λ -> Import λ #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Import λ -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Import λ -> r #

gmapQ :: (forall d. Data d => d -> u) -> Import λ -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Import λ -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Import λ -> m (Import λ) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Import λ -> m (Import λ) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Import λ -> m (Import λ) #

Show (Import λ) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

showsPrec :: Int -> Import λ -> ShowS #

show :: Import λ -> String #

showList :: [Import λ] -> ShowS #

Pretty (IdentDef l) => Pretty (Import l) Source # 
Instance details

Defined in Language.Modula2.Pretty

Methods

pretty :: Import l -> Doc ann #

prettyList :: [Import l] -> Doc ann #

data Module λ l f' f Source #

Constructors

DefinitionModule Ident [Import l] (Maybe (Export l)) (ZipList (f (Definition l l f' f'))) 
ImplementationModule Ident (Maybe (f (Priority l l f' f'))) [Import l] (f (Block l l f' f')) 
ProgramModule Ident (Maybe (f (Priority l l f' f'))) [Import l] (f (Block l l f' f')) 

Instances

Instances details
(Transformation t, Functor t (Definition l l), Functor t (Priority l l), Functor t (Block l l), Functor t (Priority l l), Functor t (Block l l)) => Functor t (Module λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: t -> Module λ l (Domain t) (Domain t) -> Module λ l (Codomain t) (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Definition l l), Foldable t (Priority l l), Foldable t (Block l l), Foldable t (Priority l l), Foldable t (Block l l)) => Foldable t (Module λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> Module λ l (Domain t) (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (Definition l l), Traversable t (Priority l l), Traversable t (Block l l), Traversable t (Priority l l), Traversable t (Block l l)) => Traversable t (Module λ l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> Module λ l (Domain t) (Domain t) -> m (Module λ l f f) #

(Transformation t, At t (Definition l l f' f'), At t (Priority l l f' f'), At t (Block l l f' f'), At t (Priority l l f' f'), At t (Block l l f' f')) => Functor t (Module λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: t -> Module λ l f' (Domain t) -> Module λ l f' (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Definition l l f' f'), At t (Priority l l f' f'), At t (Block l l f' f'), At t (Priority l l f' f'), At t (Block l l f' f')) => Foldable t (Module λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> Module λ l f' (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (Definition l l f' f'), At t (Priority l l f' f'), At t (Block l l f' f'), At t (Priority l l f' f'), At t (Block l l f' f')) => Traversable t (Module λ l f') Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> Module λ l f' (Domain t) -> m (Module λ l f' f) #

Functor (Module λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<$>) :: (forall (a :: k). p a -> q a) -> Module λ l f' p -> Module λ l f' q #

Foldable (Module λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

foldMap :: Monoid m => (forall (a :: k). p a -> m) -> Module λ l f' p -> m #

Traversable (Module λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

traverse :: Applicative m => (forall (a :: k). p a -> m (q a)) -> Module λ l f' p -> m (Module λ l f' q) #

sequence :: forall m (p :: k -> Type). Applicative m => Module λ l f' (Compose m p) -> m (Module λ l f' p) #

Apply (Module λ l f' :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(<*>) :: forall (p :: k -> Type) (q :: k -> Type). Module λ l f' (p ~> q) -> Module λ l f' p -> Module λ l f' q #

liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Module λ l f' p -> Module λ l f' q -> Module λ l f' r #

liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Module λ l f' p -> Module λ l f' q -> Module λ l f' r -> Module λ l f' s #

Attribution (Auto ConstantFold) (Module l l) Sem Placed => At (Auto ConstantFold) (Module l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

(Typeable λ, Typeable l, Typeable f, Typeable f', Data (Import l), Data (Export l), Data (f (Priority l l f' f')), Data (f (Declaration l l f' f')), Data (f (Definition l l f' f')), Data (f (Block l l f' f'))) => Data (Module λ l f' f) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Module λ l f' f -> c (Module λ l f' f) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Module λ l f' f) #

toConstr :: Module λ l f' f -> Constr #

dataTypeOf :: Module λ l f' f -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Module λ l f' f)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Module λ l f' f)) #

gmapT :: (forall b. Data b => b -> b) -> Module λ l f' f -> Module λ l f' f #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Module λ l f' f -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Module λ l f' f -> r #

gmapQ :: (forall d. Data d => d -> u) -> Module λ l f' f -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Module λ l f' f -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Module λ l f' f -> m (Module λ l f' f) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Module λ l f' f -> m (Module λ l f' f) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Module λ l f' f -> m (Module λ l f' f) #

(Show (Import l), Show (Export l), Show (f (Priority l l f' f')), Show (f (Declaration l l f' f')), Show (f (Definition l l f' f')), Show (f (Block l l f' f'))) => Show (Module λ l f' f) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

showsPrec :: Int -> Module λ l f' f -> ShowS #

show :: Module λ l f' f -> String #

showList :: [Module λ l f' f] -> ShowS #

(Pretty (Priority l l Identity Identity), Pretty (Export l), Pretty (Import l), Pretty (Declaration l l Identity Identity), Pretty (Definition l l Identity Identity), Pretty (Block l l Identity Identity)) => Pretty (Module λ l Identity Identity) Source # 
Instance details

Defined in Language.Modula2.Pretty

Methods

pretty :: Module λ l Identity Identity -> Doc ann #

prettyList :: [Module λ l Identity Identity] -> Doc ann #

type Atts (Inherited (Auto ConstantFold)) (Module λ l _1 _2) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

type Atts (Inherited (Auto ConstantFold)) (Module λ l _1 _2) = InhCF λ
type Atts (Synthesized (Auto ConstantFold)) (Module λ l _1 _2) Source # 
Instance details

Defined in Language.Modula2.ConstantFolder

type Atts (Synthesized (Auto ConstantFold)) (Module λ l _1 _2) = SynCFMod' l (Module λ l)

newtype IdentDef l Source #

Constructors

IdentDef Ident 

Instances

Instances details
Eq (IdentDef l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

(==) :: IdentDef l -> IdentDef l -> Bool #

(/=) :: IdentDef l -> IdentDef l -> Bool #

Data l => Data (IdentDef l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> IdentDef l -> c (IdentDef l) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (IdentDef l) #

toConstr :: IdentDef l -> Constr #

dataTypeOf :: IdentDef l -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (IdentDef l)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (IdentDef l)) #

gmapT :: (forall b. Data b => b -> b) -> IdentDef l -> IdentDef l #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> IdentDef l -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> IdentDef l -> r #

gmapQ :: (forall d. Data d => d -> u) -> IdentDef l -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> IdentDef l -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> IdentDef l -> m (IdentDef l) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> IdentDef l -> m (IdentDef l) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> IdentDef l -> m (IdentDef l) #

Ord (IdentDef l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

compare :: IdentDef l -> IdentDef l -> Ordering #

(<) :: IdentDef l -> IdentDef l -> Bool #

(<=) :: IdentDef l -> IdentDef l -> Bool #

(>) :: IdentDef l -> IdentDef l -> Bool #

(>=) :: IdentDef l -> IdentDef l -> Bool #

max :: IdentDef l -> IdentDef l -> IdentDef l #

min :: IdentDef l -> IdentDef l -> IdentDef l #

Show (IdentDef l) Source # 
Instance details

Defined in Language.Modula2.AST

Methods

showsPrec :: Int -> IdentDef l -> ShowS #

show :: IdentDef l -> String #

showList :: [IdentDef l] -> ShowS #

Pretty (IdentDef l) Source # 
Instance details

Defined in Language.Modula2.Pretty

Methods

pretty :: IdentDef l -> Doc ann #

prettyList :: [IdentDef l] -> Doc ann #

data Language Source #

Data type representing the Modula-2 language, as originally specified by ''Report on the Programming Language Modula-2''.

Constructors

Language 

Instances

Instances details
Data Language Source # 
Instance details

Defined in Language.Modula2.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Language -> c Language #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Language #

toConstr :: Language -> Constr #

dataTypeOf :: Language -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Language) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Language) #

gmapT :: (forall b. Data b => b -> b) -> Language -> Language #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Language -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Language -> r #

gmapQ :: (forall d. Data d => d -> u) -> Language -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Language -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Language -> m Language #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Language -> m Language #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Language -> m Language #

Wirthy Language Source # 
Instance details

Defined in Language.Modula2.AST

Associated Types

type Module Language = (m :: Type -> (Type -> Type) -> (Type -> Type) -> Type) #

type Declaration Language = (d :: Type -> (Type -> Type) -> (Type -> Type) -> Type) #

type Type Language = (t :: Type -> (Type -> Type) -> (Type -> Type) -> Type) #

type Statement Language = (s :: Type -> (Type -> Type) -> (Type -> Type) -> Type) #

type Expression Language = (e :: Type -> (Type -> Type) -> (Type -> Type) -> Type) #

type Designator Language = (d :: Type -> (Type -> Type) -> (Type -> Type) -> Type) #

type Value Language = (v :: Type -> (Type -> Type) -> (Type -> Type) -> Type) #

type FieldList Language = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) #

type ProcedureHeading Language = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) #

type FormalParameters Language = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) #

type FPSection Language = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) #

type Block Language = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) #

type StatementSequence Language = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) #

type Case Language = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) #

type CaseLabels Language = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) #

type ConditionalBranch Language = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) #

type Element Language = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) #

type Import Language = (x :: Type) #

type IdentDef Language = (x :: Type) #

type QualIdent Language = (x :: Type) #

Methods

constantDeclaration :: forall l' f (f' :: Type -> Type). IdentDef l' -> f (ConstExpression l' l' f' f') -> Declaration Language l' f' f #

typeDeclaration :: forall l' f (f' :: Type -> Type). IdentDef l' -> f (Type l' l' f' f') -> Declaration Language l' f' f #

variableDeclaration :: forall l' f (f' :: Type -> Type). IdentList l' -> f (Type l' l' f' f') -> Declaration Language l' f' f #

procedureDeclaration :: forall f l' (f' :: Type -> Type). f (ProcedureHeading l' l' f' f') -> f (Block l' l' f' f') -> Declaration Language l' f' f #

formalParameters :: forall f l' (f' :: Type -> Type). [f (FPSection l' l' f' f')] -> Maybe (ReturnType l') -> FormalParameters Language l' f' f #

fpSection :: forall f l' (f' :: Type -> Type). Bool -> [Ident] -> f (Type l' l' f' f') -> FPSection Language l' f' f #

block :: forall f l' (f' :: Type -> Type). [f (Declaration l' l' f' f')] -> Maybe (f (StatementSequence l' l' f' f')) -> Block Language l' f' f #

fieldList :: forall l' f (f' :: Type -> Type). NonEmpty (IdentDef l') -> f (Type l' l' f' f') -> FieldList Language l' f' f #

pointerType :: forall f l' (f' :: Type -> Type). f (Type l' l' f' f') -> Type Language l' f' f #

procedureType :: forall f l' (f' :: Type -> Type). Maybe (f (FormalParameters l' l' f' f')) -> Type Language l' f' f #

typeReference :: forall l' (f' :: Type -> Type) (f :: Type -> Type). QualIdent l' -> Type Language l' f' f #

assignment :: forall f l' (f' :: Type -> Type). f (Designator l' l' f' f') -> f (Expression l' l' f' f') -> Statement Language l' f' f #

caseStatement :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> [f (Case l' l' f' f')] -> Maybe (f (StatementSequence l' l' f' f')) -> Statement Language l' f' f #

emptyStatement :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Statement Language l' f' f #

exitStatement :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Statement Language l' f' f #

ifStatement :: forall f l' (f' :: Type -> Type). NonEmpty (f (ConditionalBranch l' l' f' f')) -> Maybe (f (StatementSequence l' l' f' f')) -> Statement Language l' f' f #

loopStatement :: forall f l' (f' :: Type -> Type). f (StatementSequence l' l' f' f') -> Statement Language l' f' f #

procedureCall :: forall f l' (f' :: Type -> Type). f (Designator l' l' f' f') -> Maybe [f (Expression l' l' f' f')] -> Statement Language l' f' f #

repeatStatement :: forall f l' (f' :: Type -> Type). f (StatementSequence l' l' f' f') -> f (Expression l' l' f' f') -> Statement Language l' f' f #

returnStatement :: forall f l' (f' :: Type -> Type). Maybe (f (Expression l' l' f' f')) -> Statement Language l' f' f #

whileStatement :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> f (StatementSequence l' l' f' f') -> Statement Language l' f' f #

conditionalBranch :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> f (StatementSequence l' l' f' f') -> ConditionalBranch Language l' f' f #

caseAlternative :: forall f l' (f' :: Type -> Type). NonEmpty (f (CaseLabels l' l' f' f')) -> f (StatementSequence l' l' f' f') -> Case Language l' f' f #

singleLabel :: forall f l' (f' :: Type -> Type). f (ConstExpression l' l' f' f') -> CaseLabels Language l' f' f #

labelRange :: forall f l' (f' :: Type -> Type). f (ConstExpression l' l' f' f') -> f (ConstExpression l' l' f' f') -> CaseLabels Language l' f' f #

statementSequence :: forall f l' (f' :: Type -> Type). [f (Statement l' l' f' f')] -> StatementSequence Language l' f' f #

add :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression Language l' f' f #

subtract :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression Language l' f' f #

and :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression Language l' f' f #

or :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression Language l' f' f #

divide :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression Language l' f' f #

integerDivide :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression Language l' f' f #

modulo :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression Language l' f' f #

multiply :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression Language l' f' f #

functionCall :: forall f l' (f' :: Type -> Type). f (Designator l' l' f' f') -> [f (Expression l' l' f' f')] -> Expression Language l' f' f #

literal :: forall f l' (f' :: Type -> Type). f (Value l' l' f' f') -> Expression Language l' f' f #

negative :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> Expression Language l' f' f #

positive :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> Expression Language l' f' f #

not :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> Expression Language l' f' f #

read :: forall f l' (f' :: Type -> Type). f (Designator l' l' f' f') -> Expression Language l' f' f #

relation :: forall f l' (f' :: Type -> Type). RelOp -> f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression Language l' f' f #

element :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> Element Language l' f' f #

range :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Element Language l' f' f #

integer :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Integer -> Value Language l' f' f #

nil :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Value Language l' f' f #

false :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Value Language l' f' f #

true :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Value Language l' f' f #

real :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Double -> Value Language l' f' f #

string :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Text -> Value Language l' f' f #

charCode :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Int -> Value Language l' f' f #

builtin :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Text -> Value Language l' f' f #

variable :: forall l' (f' :: Type -> Type) (f :: Type -> Type). QualIdent l' -> Designator Language l' f' f #

field :: forall f l' (f' :: Type -> Type). f (Designator l' l' f' f') -> Ident -> Designator Language l' f' f #

index :: forall f l' (f' :: Type -> Type). f (Designator l' l' f' f') -> NonEmpty (f (Expression l' l' f' f')) -> Designator Language l' f' f #

dereference :: forall f l' (f' :: Type -> Type). f (Designator l' l' f' f') -> Designator Language l' f' f #

identDef :: Ident -> IdentDef Language #

nonQualIdent :: Ident -> QualIdent Language #

CoWirthy Language Source # 
Instance details

Defined in Language.Modula2.AST

Associated Types

type TargetClass Language :: Type -> Constraint #

Methods

coDeclaration :: forall l' l'' (f' :: Type -> Type) (f :: Type -> Type). TargetClass Language l' => Declaration Language l'' f' f -> Declaration l' l'' f' f #

coType :: forall l' l'' (f' :: Type -> Type) (f :: Type -> Type). TargetClass Language l' => Type Language l'' f' f -> Type l' l'' f' f #

coStatement :: forall l' l'' (f' :: Type -> Type) (f :: Type -> Type). TargetClass Language l' => Statement Language l'' f' f -> Statement l' l'' f' f #

coExpression :: forall l' l'' (f' :: Type -> Type) (f :: Type -> Type). TargetClass Language l' => Expression Language l'' f' f -> Expression l' l'' f' f #

coDesignator :: forall l' l'' (f' :: Type -> Type) (f :: Type -> Type). TargetClass Language l' => Designator Language l'' f' f -> Designator l' l'' f' f #

coValue :: forall l' l'' (f' :: Type -> Type) (f :: Type -> Type). TargetClass Language l' => Value Language l'' f' f -> Value l' l'' f' f #

Nameable Language Source # 
Instance details

Defined in Language.Modula2.AST

Oberon Language Source # 
Instance details

Defined in Language.Modula2.Pretty

Associated Types

type WithAlternative Language = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) #

Methods

moduleUnit :: forall f l' (f' :: Type -> Type). Ident -> [Import Language] -> f (Block l' l' f' f') -> Module Language l' f' f #

moduleImport :: Maybe Ident -> Ident -> Import Language #

qualIdent :: Ident -> Ident -> QualIdent Language #

getQualIdentNames :: QualIdent Language -> Maybe (Ident, Ident) #

exported :: Ident -> IdentDef Language #

forwardDeclaration :: forall l' f (f' :: Type -> Type). IdentDef l' -> Maybe (f (FormalParameters l' l' f' f')) -> Declaration Language l' f' f #

procedureHeading :: forall l' f (f' :: Type -> Type). Bool -> IdentDef l' -> Maybe (f (FormalParameters l' l' f' f')) -> ProcedureHeading Language l' f' f #

arrayType :: forall f l' (f' :: Type -> Type). [f (ConstExpression l' l' f' f')] -> f (Type l' l' f' f') -> Type Language l' f' f #

recordType :: forall l' f (f' :: Type -> Type). Maybe (BaseType l') -> [f (FieldList l' l' f' f')] -> Type Language l' f' f #

withStatement :: forall f l' (f' :: Type -> Type). f (WithAlternative l' l' f' f') -> Statement Language l' f' f #

withAlternative :: forall l' f (f' :: Type -> Type). QualIdent l' -> QualIdent l' -> f (StatementSequence l' l' f' f') -> WithAlternative Language l' f' f #

is :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> QualIdent l' -> Expression Language l' f' f #

set :: forall f l' (f' :: Type -> Type). [f (Element l' l' f' f')] -> Expression Language l' f' f #

typeGuard :: forall f l' (f' :: Type -> Type). f (Designator l' l' f' f') -> QualIdent l' -> Designator Language l' f' f #

Modula2 Language Source # 
Instance details

Defined in Language.Modula2.AST

Associated Types

type Export Language = (x :: Type) Source #

type Definition Language = (d :: Type -> (Type -> Type) -> (Type -> Type) -> Type) Source #

type Variant Language = (v :: Type -> (Type -> Type) -> (Type -> Type) -> Type) Source #

Methods

definitionModule :: forall l' f (f' :: Type -> Type). Ident -> [Import l'] -> Maybe (Export l') -> [f (Definition l' l' f' f')] -> Module Language l' f' f Source #

implementationModule :: forall f l' (f' :: Type -> Type). Ident -> Maybe (f (Priority l' l' f' f')) -> [Import l'] -> f (Block l' l' f' f') -> Module Language l' f' f Source #

programModule :: forall f l' (f' :: Type -> Type). Ident -> Maybe (f (Priority l' l' f' f')) -> [Import l'] -> f (Block l' l' f' f') -> Module Language l' f' f Source #

moduleExport :: Bool -> NonEmpty Ident -> Export Language Source #

moduleImport :: Maybe Ident -> NonEmpty Ident -> Import Language Source #

constantDefinition :: forall l' f (f' :: Type -> Type). IdentDef l' -> f (ConstExpression l' l' f' f') -> Definition Language l' f' f Source #

typeDefinition :: forall l' f (f' :: Type -> Type). IdentDef l' -> Maybe (f (Type l' l' f' f')) -> Definition Language l' f' f Source #

variableDefinition :: forall l' f (f' :: Type -> Type). IdentList l' -> f (Type l' l' f' f') -> Definition Language l' f' f Source #

procedureDefinition :: forall f l' (f' :: Type -> Type). f (ProcedureHeading l' l' f' f') -> Definition Language l' f' f Source #

moduleDeclaration :: forall f l' (f' :: Type -> Type). Ident -> Maybe (f (Priority l' l' f' f')) -> [Import l'] -> Maybe (Export l') -> f (Block l' l' f' f') -> Declaration Language l' f' f Source #

procedureHeading :: forall f l' (f' :: Type -> Type). Ident -> Maybe (f (FormalParameters l' l' f' f')) -> ProcedureHeading Language l' f' f Source #

caseFieldList :: forall l' f (f' :: Type -> Type). Maybe Ident -> QualIdent l' -> NonEmpty (f (Variant l' l' f' f')) -> [f (FieldList l' l' f' f')] -> FieldList Language l' f' f Source #

variant :: forall f l' (f' :: Type -> Type). NonEmpty (f (CaseLabels l' l' f' f')) -> [f (FieldList l' l' f' f')] -> Variant Language l' f' f Source #

enumeration :: forall l' (f' :: Type -> Type) (f :: Type -> Type). IdentList l' -> Type Language l' f' f Source #

subRange :: forall l' f (f' :: Type -> Type). Maybe (QualIdent l') -> f (ConstExpression l' l' f' f') -> f (ConstExpression l' l' f' f') -> Type Language l' f' f Source #

arrayType :: forall f l' (f' :: Type -> Type). [f (Type l' l' f' f')] -> f (Type l' l' f' f') -> Type Language l' f' f Source #

setType :: forall f l' (f' :: Type -> Type). f (Type l' l' f' f') -> Type Language l' f' f Source #

recordType :: forall f l' (f' :: Type -> Type). [f (FieldList l' l' f' f')] -> Type Language l' f' f Source #

withStatement :: forall f l' (f' :: Type -> Type). f (Designator l' l' f' f') -> f (StatementSequence l' l' f' f') -> Statement Language l' f' f Source #

forStatement :: forall f l' (f' :: Type -> Type). 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 Language l' f' f Source #

set :: forall l' f (f' :: Type -> Type). Maybe (QualIdent l') -> [f (Element l' l' f' f')] -> Expression Language l' f' f Source #

qualIdent :: [Ident] -> Ident -> QualIdent Language Source #

(Pretty (Precedence (Expression l l Identity Identity)), Pretty (Value l l Identity Identity), Pretty (Expression l l Identity Identity), Pretty (Element l l Identity Identity), Pretty (Designator l l Identity Identity), Pretty (QualIdent l)) => Pretty (Precedence (Expression Language l Identity Identity)) Source # 
Instance details

Defined in Language.Modula2.Pretty

Pretty (Value l l Identity Identity) => Pretty (Value Language l Identity Identity) Source # 
Instance details

Defined in Language.Modula2.Pretty

(Pretty (ConstExpression l l Identity Identity), Pretty (Designator l l Identity Identity), Pretty (Case l l Identity Identity), Pretty (ConditionalBranch l l Identity Identity), Pretty (WithAlternative l l Identity Identity), Pretty (StatementSequence l l Identity Identity)) => Pretty (Statement Language l Identity Identity) Source # 
Instance details

Defined in Language.Modula2.Pretty

(Pretty (IdentDef l), Pretty (QualIdent l), Pretty (Type l l Identity Identity), Pretty (Value l l Identity Identity), Pretty (FieldList l l Identity Identity), Pretty (Variant l l Identity Identity)) => Pretty (FieldList Language l Identity Identity) Source # 
Instance details

Defined in Language.Modula2.Pretty

(Pretty (IdentDef l), Pretty (FormalParameters l l Identity Identity), Pretty (FieldList l l Identity Identity), Pretty (ConstExpression l l Identity Identity), Pretty (Type l l Identity Identity), Pretty (BaseType l)) => Pretty (Type Language l Identity Identity) Source # 
Instance details

Defined in Language.Modula2.Pretty

(Pretty (QualIdent l), Pretty (Designator l l Identity Identity), Pretty (Expression l l Identity Identity)) => Pretty (Designator Language l Identity Identity) Source # 
Instance details

Defined in Language.Modula2.Pretty

(Pretty (Precedence (Expression l l Identity Identity)), Pretty (Value l l Identity Identity), Pretty (Expression l l Identity Identity), Pretty (Element l l Identity Identity), Pretty (Designator l l Identity Identity), Pretty (QualIdent l)) => Pretty (Expression Language l Identity Identity) Source # 
Instance details

Defined in Language.Modula2.Pretty

(Nameable l, Pretty (IdentDef l), Pretty (Export l), Pretty (Import l), Pretty (Type l l Identity Identity), Pretty (Declaration l l Identity Identity), Pretty (Expression l l Identity Identity), Pretty (FormalParameters l l Identity Identity), Pretty (ProcedureHeading l l Identity Identity), Pretty (Block l l Identity Identity)) => Pretty (Declaration 'False Language l Identity Identity) Source # 
Instance details

Defined in Language.Modula2.Pretty

(Nameable l, Pretty (IdentDef l), Pretty (Export l), Pretty (Import l), Pretty (Type l l Identity Identity), Pretty (Declaration l l Identity Identity), Pretty (Expression l l Identity Identity), Pretty (FormalParameters l l Identity Identity), Pretty (ProcedureHeading l l Identity Identity), Pretty (Block l l Identity Identity)) => Pretty (Declaration 'True Language l Identity Identity) Source # 
Instance details

Defined in Language.Modula2.Pretty

type QualIdent Language Source # 
Instance details

Defined in Language.Modula2.AST

type IdentDef Language Source # 
Instance details

Defined in Language.Modula2.AST

type Import Language Source # 
Instance details

Defined in Language.Modula2.AST

type Element Language Source # 
Instance details

Defined in Language.Modula2.AST

type ConditionalBranch Language Source # 
Instance details

Defined in Language.Modula2.AST

type CaseLabels Language Source # 
Instance details

Defined in Language.Modula2.AST

type Case Language Source # 
Instance details

Defined in Language.Modula2.AST

type StatementSequence Language Source # 
Instance details

Defined in Language.Modula2.AST

type Block Language Source # 
Instance details

Defined in Language.Modula2.AST

type FPSection Language Source # 
Instance details

Defined in Language.Modula2.AST

type FormalParameters Language Source # 
Instance details

Defined in Language.Modula2.AST

type ProcedureHeading Language Source # 
Instance details

Defined in Language.Modula2.AST

type FieldList Language Source # 
Instance details

Defined in Language.Modula2.AST

type Value Language Source # 
Instance details

Defined in Language.Modula2.AST

type Designator Language Source # 
Instance details

Defined in Language.Modula2.AST

type Expression Language Source # 
Instance details

Defined in Language.Modula2.AST

type Statement Language Source # 
Instance details

Defined in Language.Modula2.AST

type Type Language Source # 
Instance details

Defined in Language.Modula2.AST

type Declaration Language Source # 
Instance details

Defined in Language.Modula2.AST

type Module Language Source # 
Instance details

Defined in Language.Modula2.AST

type TargetClass Language Source # 
Instance details

Defined in Language.Modula2.AST

type WithAlternative Language Source # 
Instance details

Defined in Language.Modula2.Pretty

type Export Language Source # 
Instance details

Defined in Language.Modula2.AST

type Definition Language Source # 
Instance details

Defined in Language.Modula2.AST

type Variant Language Source # 
Instance details

Defined in Language.Modula2.AST

type Ident = Text #

data Value λ l (f' :: Type -> Type) (f :: Type -> Type) #

Instances

Instances details
Transformation t => Functor t (Value λ l) 
Instance details

Defined in Language.Oberon.AST

Methods

(<$>) :: t -> Value λ l (Domain t) (Domain t) -> Value λ l (Codomain t) (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m) => Foldable t (Value λ l) 
Instance details

Defined in Language.Oberon.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> Value λ l (Domain t) (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m) => Traversable t (Value λ l) 
Instance details

Defined in Language.Oberon.AST

Methods

traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> Value λ l (Domain t) (Domain t) -> m (Value λ l f f) #

Transformation t => Functor t (Value λ l f') 
Instance details

Defined in Language.Oberon.AST

Methods

(<$>) :: t -> Value λ l f' (Domain t) -> Value λ l f' (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m) => Foldable t (Value λ l f') 
Instance details

Defined in Language.Oberon.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> Value λ l f' (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m) => Traversable t (Value λ l f') 
Instance details

Defined in Language.Oberon.AST

Methods

traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> Value λ l f' (Domain t) -> m (Value λ l f' f) #

Functor (Auto ConstantFold) (Value l l) 
Instance details

Defined in Language.Oberon.ConstantFolder

Functor (Value λ l f' :: (Type -> Type) -> Type) 
Instance details

Defined in Language.Oberon.AST

Methods

(<$>) :: (forall (a :: k). p a -> q a) -> Value λ l f' p -> Value λ l f' q #

Foldable (Value λ l f' :: (Type -> Type) -> Type) 
Instance details

Defined in Language.Oberon.AST

Methods

foldMap :: Monoid m => (forall (a :: k). p a -> m) -> Value λ l f' p -> m #

Traversable (Value λ l f' :: (Type -> Type) -> Type) 
Instance details

Defined in Language.Oberon.AST

Methods

traverse :: Applicative m => (forall (a :: k). p a -> m (q a)) -> Value λ l f' p -> m (Value λ l f' q) #

sequence :: forall m (p :: k -> Type). Applicative m => Value λ l f' (Compose m p) -> m (Value λ l f' p) #

Apply (Value λ l f' :: (Type -> Type) -> Type) 
Instance details

Defined in Language.Oberon.AST

Methods

(<*>) :: forall (p :: k -> Type) (q :: k -> Type). Value λ l f' (p ~> q) -> Value λ l f' p -> Value λ l f' q #

liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Value λ l f' p -> Value λ l f' q -> Value λ l f' r #

liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Value λ l f' p -> Value λ l f' q -> Value λ l f' r -> Value λ l f' s #

Eq (Value λ l f' f) 
Instance details

Defined in Language.Oberon.AST

Methods

(==) :: Value λ l f' f -> Value λ l f' f -> Bool #

(/=) :: Value λ l f' f -> Value λ l f' f -> Bool #

(Typeable λ, Typeable l, Typeable f, Typeable f') => Data (Value λ l f' f) 
Instance details

Defined in Language.Oberon.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Value λ l f' f -> c (Value λ l f' f) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Value λ l f' f) #

toConstr :: Value λ l f' f -> Constr #

dataTypeOf :: Value λ l f' f -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Value λ l f' f)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Value λ l f' f)) #

gmapT :: (forall b. Data b => b -> b) -> Value λ l f' f -> Value λ l f' f #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Value λ l f' f -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Value λ l f' f -> r #

gmapQ :: (forall d. Data d => d -> u) -> Value λ l f' f -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Value λ l f' f -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Value λ l f' f -> m (Value λ l f' f) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Value λ l f' f -> m (Value λ l f' f) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Value λ l f' f -> m (Value λ l f' f) #

Show (Value λ l f' f) 
Instance details

Defined in Language.Oberon.AST

Methods

showsPrec :: Int -> Value λ l f' f -> ShowS #

show :: Value λ l f' f -> String #

showList :: [Value λ l f' f] -> ShowS #

Pretty (Value l l Identity Identity) => Pretty (Value Language l Identity Identity) Source # 
Instance details

Defined in Language.Modula2.Pretty

Pretty (Value l l Identity Identity) => Pretty (Value Language l Identity Identity) Source # 
Instance details

Defined in Language.Modula2.ISO.Pretty

type Atts (Inherited (Auto ConstantFold)) (Value l l _1 _2) 
Instance details

Defined in Language.Oberon.ConstantFolder

type Atts (Inherited (Auto ConstantFold)) (Value l l _1 _2) = InhCF l
type Atts (Synthesized (Auto ConstantFold)) (Value l l _1 _2) 
Instance details

Defined in Language.Oberon.ConstantFolder

type Atts (Synthesized (Auto ConstantFold)) (Value l l _1 _2) = SynCF' (Value l l)

data Element λ l (f' :: Type -> Type) (f :: Type -> Type) #

Constructors

Element (f (Expression l l f' f')) 
Range (f (Expression l l f' f')) (f (Expression l l f' f')) 

Instances

Instances details
(Transformation t, Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l)) => Functor t (Element λ l) 
Instance details

Defined in Language.Oberon.AST

Methods

(<$>) :: t -> Element λ l (Domain t) (Domain t) -> Element λ l (Codomain t) (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Expression l l)) => Foldable t (Element λ l) 
Instance details

Defined in Language.Oberon.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> Element λ l (Domain t) (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Expression l l)) => Traversable t (Element λ l) 
Instance details

Defined in Language.Oberon.AST

Methods

traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> Element λ l (Domain t) (Domain t) -> m (Element λ l f f) #

(Transformation t, At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f')) => Functor t (Element λ l f') 
Instance details

Defined in Language.Oberon.AST

Methods

(<$>) :: t -> Element λ l f' (Domain t) -> Element λ l f' (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f')) => Foldable t (Element λ l f') 
Instance details

Defined in Language.Oberon.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> Element λ l f' (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f')) => Traversable t (Element λ l f') 
Instance details

Defined in Language.Oberon.AST

Methods

traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> Element λ l f' (Domain t) -> m (Element λ l f' f) #

(Functor (Auto ConstantFold) (Element l l), At (Auto ConstantFold) (Element l l (Codomain (Auto ConstantFold)) (Codomain (Auto ConstantFold)))) => Functor (Auto ConstantFold) (Element l l) 
Instance details

Defined in Language.Oberon.ConstantFolder

Functor (Element λ l f' :: (Type -> Type) -> Type) 
Instance details

Defined in Language.Oberon.AST

Methods

(<$>) :: (forall (a :: k). p a -> q a) -> Element λ l f' p -> Element λ l f' q #

Foldable (Element λ l f' :: (Type -> Type) -> Type) 
Instance details

Defined in Language.Oberon.AST

Methods

foldMap :: Monoid m => (forall (a :: k). p a -> m) -> Element λ l f' p -> m #

Traversable (Element λ l f' :: (Type -> Type) -> Type) 
Instance details

Defined in Language.Oberon.AST

Methods

traverse :: Applicative m => (forall (a :: k). p a -> m (q a)) -> Element λ l f' p -> m (Element λ l f' q) #

sequence :: forall m (p :: k -> Type). Applicative m => Element λ l f' (Compose m p) -> m (Element λ l f' p) #

Apply (Element λ l f' :: (Type -> Type) -> Type) 
Instance details

Defined in Language.Oberon.AST

Methods

(<*>) :: forall (p :: k -> Type) (q :: k -> Type). Element λ l f' (p ~> q) -> Element λ l f' p -> Element λ l f' q #

liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Element λ l f' p -> Element λ l f' q -> Element λ l f' r #

liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Element λ l f' p -> Element λ l f' q -> Element λ l f' r -> Element λ l f' s #

Attribution (Auto ConstantFold) (Element l l) Sem Placed => At (Auto ConstantFold) (Element l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) 
Instance details

Defined in Language.Oberon.ConstantFolder

Eq (f (Expression l l f' f')) => Eq (Element λ l f' f) 
Instance details

Defined in Language.Oberon.AST

Methods

(==) :: Element λ l f' f -> Element λ l f' f -> Bool #

(/=) :: Element λ l f' f -> Element λ l f' f -> Bool #

(Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (Expression l l f' f'))) => Data (Element λ l f' f) 
Instance details

Defined in Language.Oberon.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Element λ l f' f -> c (Element λ l f' f) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Element λ l f' f) #

toConstr :: Element λ l f' f -> Constr #

dataTypeOf :: Element λ l f' f -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Element λ l f' f)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Element λ l f' f)) #

gmapT :: (forall b. Data b => b -> b) -> Element λ l f' f -> Element λ l f' f #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Element λ l f' f -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Element λ l f' f -> r #

gmapQ :: (forall d. Data d => d -> u) -> Element λ l f' f -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Element λ l f' f -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Element λ l f' f -> m (Element λ l f' f) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Element λ l f' f -> m (Element λ l f' f) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Element λ l f' f -> m (Element λ l f' f) #

Show (f (Expression l l f' f')) => Show (Element λ l f' f) 
Instance details

Defined in Language.Oberon.AST

Methods

showsPrec :: Int -> Element λ l f' f -> ShowS #

show :: Element λ l f' f -> String #

showList :: [Element λ l f' f] -> ShowS #

type Atts (Inherited (Auto ConstantFold)) (Element l l _1 _2) 
Instance details

Defined in Language.Oberon.ConstantFolder

type Atts (Inherited (Auto ConstantFold)) (Element l l _1 _2) = InhCF l
type Atts (Synthesized (Auto ConstantFold)) (Element l l _1 _2) 
Instance details

Defined in Language.Oberon.ConstantFolder

type Atts (Synthesized (Auto ConstantFold)) (Element l l _1 _2) = SynCF' (Element l l)

data FormalParameters λ l (f' :: Type -> Type) (f :: Type -> Type) #

Constructors

FormalParameters (ZipList (f (FPSection l l f' f'))) (Maybe (ReturnType l)) 

Instances

Instances details
(Transformation t, Functor t (FPSection l l)) => Functor t (FormalParameters λ l) 
Instance details

Defined in Language.Oberon.AST

Methods

(<$>) :: t -> FormalParameters λ l (Domain t) (Domain t) -> FormalParameters λ l (Codomain t) (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (FPSection l l)) => Foldable t (FormalParameters λ l) 
Instance details

Defined in Language.Oberon.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> FormalParameters λ l (Domain t) (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (FPSection l l)) => Traversable t (FormalParameters λ l) 
Instance details

Defined in Language.Oberon.AST

Methods

traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> FormalParameters λ l (Domain t) (Domain t) -> m (FormalParameters λ l f f) #

(Transformation t, At t (FPSection l l f' f')) => Functor t (FormalParameters λ l f') 
Instance details

Defined in Language.Oberon.AST

Methods

(<$>) :: t -> FormalParameters λ l f' (Domain t) -> FormalParameters λ l f' (Codomain t) #

(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (FPSection l l f' f')) => Foldable t (FormalParameters λ l f') 
Instance details

Defined in Language.Oberon.AST

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> FormalParameters λ l f' (Domain t) -> m #

(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (FPSection l l f' f')) => Traversable t (FormalParameters λ l f') 
Instance details

Defined in Language.Oberon.AST

Methods

traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> FormalParameters λ l f' (Domain t) -> m (FormalParameters λ l f' f) #

(Functor (Auto ConstantFold) (FormalParameters l l), At (Auto ConstantFold) (FormalParameters l l (Codomain (Auto ConstantFold)) (Codomain (Auto ConstantFold)))) => Functor (Auto ConstantFold) (FormalParameters l l) 
Instance details

Defined in Language.Oberon.ConstantFolder

Functor (FormalParameters λ l f' :: (Type -> Type) -> Type) 
Instance details

Defined in Language.Oberon.AST

Methods

(<$>) :: (forall (a :: k). p a -> q a) -> FormalParameters λ l f' p -> FormalParameters λ l f' q #

Foldable (FormalParameters λ l f' :: (Type -> Type) -> Type) 
Instance details

Defined in Language.Oberon.AST

Methods

foldMap :: Monoid m => (forall (a :: k). p a -> m) -> FormalParameters λ l f' p -> m #

Traversable (FormalParameters λ l f' :: (Type -> Type) -> Type) 
Instance details

Defined in Language.Oberon.AST

Methods

traverse :: Applicative m => (forall (a :: k). p a -> m (q a)) -> FormalParameters λ l f' p -> m (FormalParameters λ l f' q) #

sequence :: forall m (p :: k -> Type). Applicative m => FormalParameters λ l f' (Compose m p) -> m (FormalParameters λ l f' p) #

Apply (FormalParameters λ l f' :: (Type -> Type) -> Type) 
Instance details

Defined in Language.Oberon.AST

Methods

(<*>) :: forall (p :: k -> Type) (q :: k -> Type). FormalParameters λ l f' (p ~> q) -> FormalParameters λ l f' p -> FormalParameters λ l f' q #

liftA2 :: (forall (a :: k). p a -> q a -> r a) -> FormalParameters λ l f' p -> FormalParameters λ l f' q -> FormalParameters λ l f' r #

liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> FormalParameters λ l f' p -> FormalParameters λ l f' q -> FormalParameters λ l f' r -> FormalParameters λ l f' s #

Attribution (Auto ConstantFold) (FormalParameters l l) Sem Placed => At (Auto ConstantFold) (FormalParameters l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) 
Instance details

Defined in Language.Oberon.ConstantFolder

(Typeable λ, Typeable l, Typeable f, Typeable f', Data (ReturnType l), Data (f (FPSection l l f' f')), Data (f (Expression l l f' f'))) => Data (FormalParameters λ l f' f) 
Instance details

Defined in Language.Oberon.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FormalParameters λ l f' f -> c (FormalParameters λ l f' f) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (FormalParameters λ l f' f) #

toConstr :: FormalParameters λ l f' f -> Constr #

dataTypeOf :: FormalParameters λ l f' f -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (FormalParameters λ l f' f)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (FormalParameters λ l f' f)) #

gmapT :: (forall b. Data b => b -> b) -> FormalParameters λ l f' f -> FormalParameters λ l f' f #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FormalParameters λ l f' f -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FormalParameters λ l f' f -> r #

gmapQ :: (forall d. Data d => d -> u) -> FormalParameters λ l f' f -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> FormalParameters λ l f' f -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> FormalParameters λ l f' f -> m (FormalParameters λ l f' f) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FormalParameters λ l f' f -> m (FormalParameters λ l f' f) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FormalParameters λ l f' f -> m (FormalParameters λ l f' f) #

(Show (f (FPSection l l f' f')), Show (ReturnType l), Show (f (Expression l l f' f'))) => Show (FormalParameters λ l f' f) 
Instance details

Defined in Language.Oberon.AST

Methods

showsPrec :: Int -> FormalParameters λ l f' f -> ShowS #

show :: FormalParameters λ l f' f -> String #

showList :: [FormalParameters λ l f' f] -> ShowS #

type Atts (Inherited (Auto ConstantFold)) (FormalParameters l l _1 _2) 
Instance details

Defined in Language.Oberon.ConstantFolder

type Atts (Synthesized (Auto ConstantFold)) (FormalParameters l l _1 _2) 
Instance details

Defined in Language.Oberon.ConstantFolder

data FPSection λ l (f' :: Type -> Type) (f :: Type -> Type) #

Constructors

FPSection Bool [Ident] (f (Type l l f' f')) 

Instances

Instances details
(Transformation t, Functor t (Type l l)) =>