Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
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
- data Statement λ l f' f
- = 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')))
- data ProcedureHeading λ l f' f = ProcedureHeading Ident (Maybe (f (FormalParameters l l f' f')))
- data Variant λ l f' f = Variant (f (CaseLabels l l f' f')) (ZipList (f (CaseLabels l l f' f'))) (ZipList (f (FieldList l l f' f')))
- data FieldList λ l f' f
- data Type λ l f' f
- = 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')))
- data Designator λ l f' f
- = 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'))
- data Expression λ l f' f
- = 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'))
- data QualIdent l = QualIdent [Ident] Ident
- data Declaration (full :: Bool) λ l (f' :: * -> *) (f :: * -> *) where
- 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
- data Export λ = Export Bool (NonEmpty Ident)
- data Import λ = Import (Maybe Ident) (NonEmpty Ident)
- data Module λ l f' f
- = 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'))
- newtype IdentDef l = IdentDef Ident
- data Language = Language
- type Ident = Text
- data Value λ l (f' :: Type -> Type) (f :: Type -> Type)
- data Element λ l (f' :: Type -> Type) (f :: Type -> Type)
- = Element (f (Expression l l f' f'))
- | Range (f (Expression l l f' f')) (f (Expression l l f' f'))
- data FormalParameters λ l (f' :: Type -> Type) (f :: Type -> Type) = FormalParameters (ZipList (f (FPSection l l f' f'))) (Maybe (ReturnType l))
- data FPSection λ l (f' :: Type -> Type) (f :: Type -> Type) = FPSection Bool [Ident] (f (Type l l f' f'))
- data Block λ l (f' :: Type -> Type) (f :: Type -> Type) = Block (ZipList (f (Declaration l l f' f'))) (Maybe (f (StatementSequence l l f' f')))
- newtype StatementSequence λ l (f' :: Type -> Type) (f :: Type -> Type) = StatementSequence (ZipList (f (Statement l l f' f')))
- data Case λ l (f' :: Type -> Type) (f :: Type -> TYPE LiftedRep) = Case (f (CaseLabels l l f' f')) (ZipList (f (CaseLabels l l f' f'))) (f (StatementSequence l l f' f'))
- data CaseLabels λ l (f' :: Type -> Type) (f :: Type -> Type)
- = SingleLabel (f (ConstExpression l l f' f'))
- | LabelRange (f (ConstExpression l l f' f')) (f (ConstExpression l l f' f'))
- data ConditionalBranch λ l (f' :: Type -> Type) (f :: Type -> Type) = ConditionalBranch (f (Expression l l f' f')) (f (StatementSequence l l f' f'))
- data RelOp
- = Equal
- | Unequal
- | Less
- | LessOrEqual
- | Greater
- | GreaterOrEqual
- | In
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
data ProcedureHeading λ l f' f Source #
Constructors
ProcedureHeading Ident (Maybe (f (FormalParameters l l f' f'))) |
Instances
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
(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 # | |
(Transformation t, Functor t (CaseLabels l l), Functor t (CaseLabels l l), Functor t (FieldList l l)) => Functor t (Variant λ l) Source # | |
(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 # | |
(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 # | |
(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 # | |
(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 # | |
Apply (Variant λ l f' :: (Type -> TYPE LiftedRep) -> Type) Source # | |
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 # | |
Foldable (Variant λ l f' :: (Type -> TYPE LiftedRep) -> Type) Source # | |
Defined in Language.Modula2.AST | |
Functor (Variant λ l f' :: (Type -> TYPE LiftedRep) -> Type) Source # | |
Defined in Language.Modula2.AST | |
Traversable (Variant λ l f' :: (Type -> TYPE LiftedRep) -> Type) Source # | |
Defined in Language.Modula2.AST | |
(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 # | |
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 # | |
(Pretty (CaseLabels l l Identity Identity), Pretty (FieldList l l Identity Identity)) => Pretty (Variant λ l Identity Identity) Source # | |
type Atts (Inherited ConstantFold) (Variant λ l _1 _2) Source # | |
Defined in Language.Modula2.ConstantFolder | |
type Atts (Synthesized ConstantFold) (Variant λ l _1 _2) Source # | |
Defined in Language.Modula2.ConstantFolder |
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
(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 # | |
(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 # | |
(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 # | |
(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 # | |
(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 # | |
(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 # | |
Apply (FieldList λ l f' :: (Type -> TYPE LiftedRep) -> Type) Source # | |
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 # | |
Foldable (FieldList λ l f' :: (Type -> TYPE LiftedRep) -> Type) Source # | |
Defined in Language.Modula2.AST | |
Functor (FieldList λ l f' :: (Type -> TYPE LiftedRep) -> Type) Source # | |
Defined in Language.Modula2.AST | |
Traversable (FieldList λ l f' :: (Type -> TYPE LiftedRep) -> Type) Source # | |
Defined in Language.Modula2.AST | |
(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 # | |
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 # | |
(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 # | |
(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 # | |
type Atts (Inherited ConstantFold) (FieldList λ l _1 _2) Source # | |
Defined in Language.Modula2.ConstantFolder | |
type Atts (Synthesized ConstantFold) (FieldList λ l _1 _2) Source # | |
Defined in Language.Modula2.ConstantFolder |
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
(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 # | |
(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 # | |
(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 # | |
(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 # | |
(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 # | |
(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 # | |
Apply (Type λ l f' :: (Type -> Type) -> Type) Source # | |
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 # | |
Foldable (Type λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Modula2.AST | |
Functor (Type λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Modula2.AST | |
Traversable (Type λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Modula2.AST | |
(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 # | |
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 # | |
(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 # | |
type Atts (Inherited ConstantFold) (Type λ l _1 _2) Source # | |
Defined in Language.Modula2.ConstantFolder | |
type Atts (Synthesized ConstantFold) (Type λ l _1 _2) Source # | |
Defined in Language.Modula2.ConstantFolder |
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
(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 # | |
Defined in Language.Modula2.AST | |
(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 # | |
Defined in Language.Modula2.AST Methods (<$>) :: t -> Designator λ l (Domain t) (Domain t) -> Designator λ l (Codomain t) (Codomain t) # | |
(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 # | |
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, 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 # | |
Defined in Language.Modula2.AST | |
(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 # | |
Defined in Language.Modula2.AST Methods (<$>) :: t -> Designator λ l f' (Domain t) -> Designator λ l f' (Codomain t) # | |
(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 # | |
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) # | |
Apply (Designator λ l f' :: (Type -> TYPE LiftedRep) -> Type) Source # | |
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 # | |
Foldable (Designator λ l f' :: (Type -> TYPE LiftedRep) -> Type) Source # | |
Defined in Language.Modula2.AST Methods foldMap :: Monoid m => (forall (a :: k). p a -> m) -> Designator λ l f' p -> m # | |
Functor (Designator λ l f' :: (Type -> TYPE LiftedRep) -> Type) Source # | |
Defined in Language.Modula2.AST Methods (<$>) :: (forall (a :: k). p a -> q a) -> Designator λ l f' p -> Designator λ l f' q # | |
Traversable (Designator λ l f' :: (Type -> TYPE LiftedRep) -> Type) Source # | |
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) # | |
(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 # | |
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 # | |
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 # | |
(Eq (QualIdent l), Eq (f (Designator l l f' f')), Eq (f (Expression l l f' f'))) => Eq (Designator λ l f' f) Source # | |
Defined in Language.Modula2.AST Methods (==) :: Designator λ l f' f -> Designator λ l f' f -> Bool # (/=) :: Designator λ l f' f -> Designator λ l f' f -> Bool # | |
(Pretty (QualIdent l), Pretty (Designator l l Identity Identity), Pretty (Expression l l Identity Identity)) => Pretty (Designator Language l Identity Identity) Source # | |
Defined in Language.Modula2.Pretty Methods pretty :: Designator Language l Identity Identity -> Doc ann # prettyList :: [Designator Language l Identity Identity] -> Doc ann # | |
(Pretty (QualIdent l), Pretty (Designator l l Identity Identity), Pretty (Expression l l Identity Identity)) => Pretty (Designator Language l Identity Identity) Source # | |
Defined in Language.Modula2.ISO.Pretty Methods pretty :: Designator Language l Identity Identity -> Doc ann # prettyList :: [Designator Language l Identity Identity] -> Doc ann # | |
type Atts (Inherited ConstantFold) (Designator λ l _1 _2) Source # | |
Defined in Language.Modula2.ConstantFolder | |
type Atts (Synthesized ConstantFold) (Designator λ l _1 _2) Source # | |
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
Data l => Data (QualIdent l) Source # | |
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) # | |
Show (QualIdent l) Source # | |
Eq (QualIdent l) Source # | |
Ord (QualIdent l) Source # | |
Defined in Language.Modula2.AST | |
Pretty (QualIdent l) Source # | |
Defined in Language.Modula2.Pretty |
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
Data λ => Data (Export λ) Source # | |
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 # | |
Pretty (IdentDef l) => Pretty (Export l) Source # | |
Defined in Language.Modula2.Pretty |
Instances
Data λ => Data (Import λ) Source # | |
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 # | |
Pretty (IdentDef l) => Pretty (Import l) Source # | |
Defined in Language.Modula2.Pretty |
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
(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 # | |
(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 # | |
(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 # | |
(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 # | |
(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 # | |
(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 # | |
Apply (Module λ l f' :: (Type -> Type) -> Type) Source # | |
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 # | |
Foldable (Module λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Modula2.AST | |
Functor (Module λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Modula2.AST | |
Traversable (Module λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Modula2.AST | |
(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 # | |
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 # | |
(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 # | |
type Atts (Inherited ConstantFold) (Module λ l _1 _2) Source # | |
Defined in Language.Modula2.ConstantFolder | |
type Atts (Synthesized ConstantFold) (Module λ l _1 _2) Source # | |
Defined in Language.Modula2.ConstantFolder |
Instances
Data l => Data (IdentDef l) Source # | |
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) # | |
Show (IdentDef l) Source # | |
Eq (IdentDef l) Source # | |
Ord (IdentDef l) Source # | |
Defined in Language.Modula2.AST | |
Pretty (IdentDef l) Source # | |
Defined in Language.Modula2.Pretty |
Data type representing the Modula-2 language, as originally specified by ''Report on the Programming Language Modula-2''.
Constructors
Language |
Instances
data Value λ l (f' :: Type -> Type) (f :: Type -> Type) #
Instances
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m) => Foldable t (Value λ l) | |
Transformation t => Functor t (Value λ l) | |
(Transformation t, Codomain t ~ Compose m f, Applicative m) => Traversable t (Value λ l) | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m) => Foldable t (Value λ l f') | |
Transformation t => Functor t (Value λ l f') | |
(Transformation t, Codomain t ~ Compose m f, Applicative m) => Traversable t (Value λ l f') | |
Apply (Value λ l f' :: (Type -> Type) -> Type) | |
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 # | |
Foldable (Value λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
Functor (Value λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
Traversable (Value λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
(Typeable λ, Typeable l, Typeable f, Typeable f') => Data (Value λ l f' f) | |
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) | |
Eq (Value λ l f' f) | |
Pretty (Value l l Identity Identity) => Pretty (Value Language l Identity Identity) Source # | |
Pretty (Value l l Identity Identity) => Pretty (Value Language l Identity Identity) Source # | |
type Atts (Inherited ConstantFold) (Value l l _1 _2) | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (Value l l _1 _2) | |
Defined in Language.Oberon.ConstantFolder |
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
(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) | |
(Transformation t, Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l)) => Functor t (Element λ l) | |
(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) | |
(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') | |
(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') | |
(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') | |
Apply (Element λ l f' :: (Type -> Type) -> Type) | |
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 # | |
Foldable (Element λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
Functor (Element λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
Traversable (Element λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (Expression l l f' f'))) => Data (Element λ l f' f) | |
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) | |
Eq (f (Expression l l f' f')) => Eq (Element λ l f' f) | |
type Atts (Inherited ConstantFold) (Element λ l _1 _2) | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (Element l l _1 _2) | |
Defined in Language.Oberon.ConstantFolder |
data FormalParameters λ l (f' :: Type -> Type) (f :: Type -> Type) #
Constructors
FormalParameters (ZipList (f (FPSection l l f' f'))) (Maybe (ReturnType l)) |
Instances
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (FPSection l l)) => Foldable t (FormalParameters λ l) | |
Defined in Language.Oberon.AST | |
(Transformation t, Functor t (FPSection l l)) => Functor t (FormalParameters λ l) | |
Defined in Language.Oberon.AST Methods (<$>) :: t -> FormalParameters λ l (Domain t) (Domain t) -> FormalParameters λ l (Codomain t) (Codomain t) # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (FPSection l l)) => Traversable t (FormalParameters λ l) | |
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, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (FPSection l l f' f')) => Foldable t (FormalParameters λ l f') | |
Defined in Language.Oberon.AST | |
(Transformation t, At t (FPSection l l f' f')) => Functor t (FormalParameters λ l f') | |
Defined in Language.Oberon.AST Methods (<$>) :: t -> FormalParameters λ l f' (Domain t) -> FormalParameters λ l f' (Codomain t) # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (FPSection l l f' f')) => Traversable t (FormalParameters λ l f') | |
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) # | |
Apply (FormalParameters λ l f' :: (Type -> Type) -> Type) | |
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 # | |
Foldable (FormalParameters λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST Methods foldMap :: Monoid m => (forall (a :: k). p a -> m) -> FormalParameters λ l f' p -> m # | |
Functor (FormalParameters λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST Methods (<$>) :: (forall (a :: k). p a -> q a) -> FormalParameters λ l f' p -> FormalParameters λ l f' q # | |
Traversable (FormalParameters λ l f' :: (Type -> Type) -> Type) | |
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) # | |
(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) | |
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) | |
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 ConstantFold) (FormalParameters λ l _1 _2) | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (FormalParameters l l _1 _2) | |
Defined in Language.Oberon.ConstantFolder |
data FPSection λ l (f' :: Type -> Type) (f :: Type -> Type) #
Instances
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Type l l)) => Foldable t (FPSection λ l) | |
(Transformation t, Functor t (Type l l)) => Functor t (FPSection λ l) | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (Type l l)) => Traversable t (FPSection λ l) | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Type l l f' f')) => Foldable t (FPSection λ l f') | |
(Transformation t, At t (Type l l f' f')) => Functor t (FPSection λ l f') | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (Type l l f' f')) => Traversable t (FPSection λ l f') | |
Apply (FPSection λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST Methods (<*>) :: forall (p :: k -> Type) (q :: k -> Type). FPSection λ l f' (p ~> q) -> FPSection λ l f' p -> FPSection λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> FPSection λ l f' p -> FPSection λ l f' q -> FPSection λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> FPSection λ l f' p -> FPSection λ l f' q -> FPSection λ l f' r -> FPSection λ l f' s # | |
Foldable (FPSection λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
Functor (FPSection λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
Traversable (FPSection λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (Type l l f' f')), Data (f (Expression l l f' f'))) => Data (FPSection λ l f' f) | |
Defined in Language.Oberon.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FPSection λ l f' f -> c (FPSection λ l f' f) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (FPSection λ l f' f) # toConstr :: FPSection λ l f' f -> Constr # dataTypeOf :: FPSection λ l f' f -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (FPSection λ l f' f)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (FPSection λ l f' f)) # gmapT :: (forall b. Data b => b -> b) -> FPSection λ l f' f -> FPSection λ l f' f # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FPSection λ l f' f -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FPSection λ l f' f -> r # gmapQ :: (forall d. Data d => d -> u) -> FPSection λ l f' f -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> FPSection λ l f' f -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> FPSection λ l f' f -> m (FPSection λ l f' f) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FPSection λ l f' f -> m (FPSection λ l f' f) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FPSection λ l f' f -> m (FPSection λ l f' f) # | |
(Show (f (Type l l f' f')), Show (f (Expression l l f' f'))) => Show (FPSection λ l f' f) | |
type Atts (Inherited ConstantFold) (FPSection λ l _1 _2) | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (FPSection l l _1 _2) | |
Defined in Language.Oberon.ConstantFolder |
data Block λ l (f' :: Type -> Type) (f :: Type -> Type) #
Constructors
Block (ZipList (f (Declaration l l f' f'))) (Maybe (f (StatementSequence l l f' f'))) |
Instances
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Declaration l l), Foldable t (StatementSequence l l)) => Foldable t (Block λ l) | |
(Transformation t, Functor t (Declaration l l), Functor t (StatementSequence l l)) => Functor t (Block λ l) | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (Declaration l l), Traversable t (StatementSequence l l)) => Traversable t (Block λ l) | |
(Nameable l, k ~ QualIdent l, v ~ Value l l Placed Placed, Ord k, Atts (Synthesized (Auto ConstantFold)) (Declaration l l Sem Sem) ~ SynCFMod' l (Declaration l l)) => SynthesizedField "moduleEnv" (Map k (Maybe v)) (Auto ConstantFold) (Block l l) Sem Placed | |
Defined in Language.Oberon.ConstantFolder Methods synthesizedField :: forall (sem :: Type -> TYPE LiftedRep). sem ~ Semantics (Auto ConstantFold) => Proxy "moduleEnv" -> Auto ConstantFold -> Placed (Block l l Sem Sem) -> Atts (Inherited (Auto ConstantFold)) (Block l l sem sem) -> Block l l sem (Synthesized (Auto ConstantFold)) -> Map k (Maybe v) # | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Declaration l l f' f'), At t (StatementSequence l l f' f')) => Foldable t (Block λ l f') | |
(Transformation t, At t (Declaration l l f' f'), At t (StatementSequence l l f' f')) => Functor t (Block λ l f') | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (Declaration l l f' f'), At t (StatementSequence l l f' f')) => Traversable t (Block λ l f') | |
Apply (Block λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST Methods (<*>) :: forall (p :: k -> Type) (q :: k -> Type). Block λ l f' (p ~> q) -> Block λ l f' p -> Block λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Block λ l f' p -> Block λ l f' q -> Block λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Block λ l f' p -> Block λ l f' q -> Block λ l f' r -> Block λ l f' s # | |
Foldable (Block λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
Functor (Block λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
Traversable (Block λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
(Nameable l, Ord (QualIdent l), Atts (Synthesized (Auto ConstantFold)) (Declaration l l Sem Sem) ~ SynCFMod' l (Declaration l l), Atts (Inherited (Auto ConstantFold)) (StatementSequence l l Sem Sem) ~ InhCF l, Atts (Inherited (Auto ConstantFold)) (Declaration l l Sem Sem) ~ InhCF l) => Bequether (Auto ConstantFold) (Block l l) Sem Placed | |
Defined in Language.Oberon.ConstantFolder Methods bequest :: forall (sem :: Type -> TYPE LiftedRep). sem ~ Semantics (Auto ConstantFold) => Auto ConstantFold -> Placed (Block l l Sem Sem) -> Atts (Inherited (Auto ConstantFold)) (Block l l sem sem) -> Block l l sem (Synthesized (Auto ConstantFold)) -> Block l l sem (Inherited (Auto ConstantFold)) # | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (Declaration l l f' f')), Data (f (Designator l l f' f')), Data (f (Expression l l f' f')), Data (f (StatementSequence l l f' f'))) => Data (Block λ l f' f) | |
Defined in Language.Oberon.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Block λ l f' f -> c (Block λ l f' f) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Block λ l f' f) # toConstr :: Block λ l f' f -> Constr # dataTypeOf :: Block λ l f' f -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Block λ l f' f)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Block λ l f' f)) # gmapT :: (forall b. Data b => b -> b) -> Block λ l f' f -> Block λ l f' f # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Block λ l f' f -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Block λ l f' f -> r # gmapQ :: (forall d. Data d => d -> u) -> Block λ l f' f -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Block λ l f' f -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Block λ l f' f -> m (Block λ l f' f) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Block λ l f' f -> m (Block λ l f' f) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Block λ l f' f -> m (Block λ l f' f) # | |
(Show (f (Declaration l l f' f')), Show (f (Designator l l f' f')), Show (f (Expression l l f' f')), Show (f (StatementSequence l l f' f'))) => Show (Block λ l f' f) | |
type Atts (Inherited ConstantFold) (Block λ l _1 _2) | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (Block l l _1 _2) | |
Defined in Language.Oberon.ConstantFolder |
newtype StatementSequence λ l (f' :: Type -> Type) (f :: Type -> Type) #
Constructors
StatementSequence (ZipList (f (Statement l l f' f'))) |
Instances
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Statement l l)) => Foldable t (StatementSequence λ l) | |
Defined in Language.Oberon.AST | |
(Transformation t, Functor t (Statement l l)) => Functor t (StatementSequence λ l) | |
Defined in Language.Oberon.AST Methods (<$>) :: t -> StatementSequence λ l (Domain t) (Domain t) -> StatementSequence λ l (Codomain t) (Codomain t) # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (Statement l l)) => Traversable t (StatementSequence λ l) | |
Defined in Language.Oberon.AST Methods traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> StatementSequence λ l (Domain t) (Domain t) -> m (StatementSequence λ l f f) # | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Statement l l f' f')) => Foldable t (StatementSequence λ l f') | |
Defined in Language.Oberon.AST | |
(Transformation t, At t (Statement l l f' f')) => Functor t (StatementSequence λ l f') | |
Defined in Language.Oberon.AST Methods (<$>) :: t -> StatementSequence λ l f' (Domain t) -> StatementSequence λ l f' (Codomain t) # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (Statement l l f' f')) => Traversable t (StatementSequence λ l f') | |
Defined in Language.Oberon.AST Methods traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> StatementSequence λ l f' (Domain t) -> m (StatementSequence λ l f' f) # | |
Apply (StatementSequence λ l f' :: (Type -> Type) -> TYPE LiftedRep) | |
Defined in Language.Oberon.AST Methods (<*>) :: forall (p :: k -> Type) (q :: k -> Type). StatementSequence λ l f' (p ~> q) -> StatementSequence λ l f' p -> StatementSequence λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> StatementSequence λ l f' p -> StatementSequence λ l f' q -> StatementSequence λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> StatementSequence λ l f' p -> StatementSequence λ l f' q -> StatementSequence λ l f' r -> StatementSequence λ l f' s # | |
Foldable (StatementSequence λ l f' :: (Type -> Type) -> TYPE LiftedRep) | |
Defined in Language.Oberon.AST Methods foldMap :: Monoid m => (forall (a :: k). p a -> m) -> StatementSequence λ l f' p -> m # | |
Functor (StatementSequence λ l f' :: (Type -> Type) -> TYPE LiftedRep) | |
Defined in Language.Oberon.AST Methods (<$>) :: (forall (a :: k). p a -> q a) -> StatementSequence λ l f' p -> StatementSequence λ l f' q # | |
Traversable (StatementSequence λ l f' :: (Type -> Type) -> TYPE LiftedRep) | |
Defined in Language.Oberon.AST Methods traverse :: Applicative m => (forall (a :: k). p a -> m (q a)) -> StatementSequence λ l f' p -> m (StatementSequence λ l f' q) # sequence :: forall m (p :: k -> Type). Applicative m => StatementSequence λ l f' (Compose m p) -> m (StatementSequence λ l f' p) # | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (Statement l l f' f'))) => Data (StatementSequence λ l f' f) | |
Defined in Language.Oberon.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> StatementSequence λ l f' f -> c (StatementSequence λ l f' f) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (StatementSequence λ l f' f) # toConstr :: StatementSequence λ l f' f -> Constr # dataTypeOf :: StatementSequence λ l f' f -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (StatementSequence λ l f' f)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (StatementSequence λ l f' f)) # gmapT :: (forall b. Data b => b -> b) -> StatementSequence λ l f' f -> StatementSequence λ l f' f # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> StatementSequence λ l f' f -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> StatementSequence λ l f' f -> r # gmapQ :: (forall d. Data d => d -> u) -> StatementSequence λ l f' f -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> StatementSequence λ l f' f -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> StatementSequence λ l f' f -> m (StatementSequence λ l f' f) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> StatementSequence λ l f' f -> m (StatementSequence λ l f' f) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> StatementSequence λ l f' f -> m (StatementSequence λ l f' f) # | |
Show (f (Statement l l f' f')) => Show (StatementSequence λ l f' f) | |
Defined in Language.Oberon.AST Methods showsPrec :: Int -> StatementSequence λ l f' f -> ShowS # show :: StatementSequence λ l f' f -> String # showList :: [StatementSequence λ l f' f] -> ShowS # | |
type Atts (Inherited ConstantFold) (StatementSequence λ l _1 _2) | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (StatementSequence l l _1 _2) | |
Defined in Language.Oberon.ConstantFolder |
data Case λ l (f' :: Type -> Type) (f :: Type -> TYPE LiftedRep) #
Constructors
Case (f (CaseLabels l l f' f')) (ZipList (f (CaseLabels l l f' f'))) (f (StatementSequence l l f' f')) |
Instances
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (CaseLabels l l), Foldable t (CaseLabels l l), Foldable t (StatementSequence l l)) => Foldable t (Case λ l) | |
(Transformation t, Functor t (CaseLabels l l), Functor t (CaseLabels l l), Functor t (StatementSequence l l)) => Functor t (Case λ l) | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (CaseLabels l l), Traversable t (CaseLabels l l), Traversable t (StatementSequence l l)) => Traversable t (Case λ l) | |
(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 (StatementSequence l l f' f')) => Foldable t (Case λ l f') | |
(Transformation t, At t (CaseLabels l l f' f'), At t (CaseLabels l l f' f'), At t (StatementSequence l l f' f')) => Functor t (Case λ l f') | |
(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 (StatementSequence l l f' f')) => Traversable t (Case λ l f') | |
Apply (Case λ l f' :: (Type -> TYPE LiftedRep) -> Type) | |
Defined in Language.Oberon.AST Methods (<*>) :: forall (p :: k -> Type) (q :: k -> Type). Case λ l f' (p ~> q) -> Case λ l f' p -> Case λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Case λ l f' p -> Case λ l f' q -> Case λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Case λ l f' p -> Case λ l f' q -> Case λ l f' r -> Case λ l f' s # | |
Foldable (Case λ l f' :: (Type -> TYPE LiftedRep) -> Type) | |
Defined in Language.Oberon.AST | |
Functor (Case λ l f' :: (Type -> TYPE LiftedRep) -> Type) | |
Defined in Language.Oberon.AST | |
Traversable (Case λ l f' :: (Type -> TYPE LiftedRep) -> Type) | |
Defined in Language.Oberon.AST | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (CaseLabels l l f' f')), Data (f (StatementSequence l l f' f'))) => Data (Case λ l f' f) | |
Defined in Language.Oberon.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Case λ l f' f -> c (Case λ l f' f) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Case λ l f' f) # toConstr :: Case λ l f' f -> Constr # dataTypeOf :: Case λ l f' f -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Case λ l f' f)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Case λ l f' f)) # gmapT :: (forall b. Data b => b -> b) -> Case λ l f' f -> Case λ l f' f # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Case λ l f' f -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Case λ l f' f -> r # gmapQ :: (forall d. Data d => d -> u) -> Case λ l f' f -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Case λ l f' f -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Case λ l f' f -> m (Case λ l f' f) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Case λ l f' f -> m (Case λ l f' f) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Case λ l f' f -> m (Case λ l f' f) # | |
(Show (f (CaseLabels l l f' f')), Show (f (StatementSequence l l f' f'))) => Show (Case λ l f' f) | |
type Atts (Inherited ConstantFold) (Case λ l _1 _2) | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (Case l l _1 _2) | |
Defined in Language.Oberon.ConstantFolder |
data CaseLabels λ l (f' :: Type -> Type) (f :: Type -> Type) #
Constructors
SingleLabel (f (ConstExpression l l f' f')) | |
LabelRange (f (ConstExpression l l f' f')) (f (ConstExpression l l f' f')) |
Instances
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (ConstExpression l l), Foldable t (ConstExpression l l), Foldable t (ConstExpression l l)) => Foldable t (CaseLabels λ l) | |
Defined in Language.Oberon.AST | |
(Transformation t, Functor t (ConstExpression l l), Functor t (ConstExpression l l), Functor t (ConstExpression l l)) => Functor t (CaseLabels λ l) | |
Defined in Language.Oberon.AST Methods (<$>) :: t -> CaseLabels λ l (Domain t) (Domain t) -> CaseLabels λ l (Codomain t) (Codomain t) # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (ConstExpression l l), Traversable t (ConstExpression l l), Traversable t (ConstExpression l l)) => Traversable t (CaseLabels λ l) | |
Defined in Language.Oberon.AST Methods traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> CaseLabels λ l (Domain t) (Domain t) -> m (CaseLabels λ l f f) # | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (ConstExpression l l f' f'), At t (ConstExpression l l f' f'), At t (ConstExpression l l f' f')) => Foldable t (CaseLabels λ l f') | |
Defined in Language.Oberon.AST | |
(Transformation t, At t (ConstExpression l l f' f'), At t (ConstExpression l l f' f'), At t (ConstExpression l l f' f')) => Functor t (CaseLabels λ l f') | |
Defined in Language.Oberon.AST Methods (<$>) :: t -> CaseLabels λ l f' (Domain t) -> CaseLabels λ l f' (Codomain t) # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (ConstExpression l l f' f'), At t (ConstExpression l l f' f'), At t (ConstExpression l l f' f')) => Traversable t (CaseLabels λ l f') | |
Defined in Language.Oberon.AST Methods traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> CaseLabels λ l f' (Domain t) -> m (CaseLabels λ l f' f) # | |
Apply (CaseLabels λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST Methods (<*>) :: forall (p :: k -> Type) (q :: k -> Type). CaseLabels λ l f' (p ~> q) -> CaseLabels λ l f' p -> CaseLabels λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> CaseLabels λ l f' p -> CaseLabels λ l f' q -> CaseLabels λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> CaseLabels λ l f' p -> CaseLabels λ l f' q -> CaseLabels λ l f' r -> CaseLabels λ l f' s # | |
Foldable (CaseLabels λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST Methods foldMap :: Monoid m => (forall (a :: k). p a -> m) -> CaseLabels λ l f' p -> m # | |
Functor (CaseLabels λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST Methods (<$>) :: (forall (a :: k). p a -> q a) -> CaseLabels λ l f' p -> CaseLabels λ l f' q # | |
Traversable (CaseLabels λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST Methods traverse :: Applicative m => (forall (a :: k). p a -> m (q a)) -> CaseLabels λ l f' p -> m (CaseLabels λ l f' q) # sequence :: forall m (p :: k -> Type). Applicative m => CaseLabels λ l f' (Compose m p) -> m (CaseLabels λ l f' p) # | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (ConstExpression l l f' f'))) => Data (CaseLabels λ l f' f) | |
Defined in Language.Oberon.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CaseLabels λ l f' f -> c (CaseLabels λ l f' f) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (CaseLabels λ l f' f) # toConstr :: CaseLabels λ l f' f -> Constr # dataTypeOf :: CaseLabels λ l f' f -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (CaseLabels λ l f' f)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (CaseLabels λ l f' f)) # gmapT :: (forall b. Data b => b -> b) -> CaseLabels λ l f' f -> CaseLabels λ l f' f # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CaseLabels λ l f' f -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CaseLabels λ l f' f -> r # gmapQ :: (forall d. Data d => d -> u) -> CaseLabels λ l f' f -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> CaseLabels λ l f' f -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> CaseLabels λ l f' f -> m (CaseLabels λ l f' f) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CaseLabels λ l f' f -> m (CaseLabels λ l f' f) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CaseLabels λ l f' f -> m (CaseLabels λ l f' f) # | |
Show (f (ConstExpression l l f' f')) => Show (CaseLabels λ l f' f) | |
Defined in Language.Oberon.AST Methods showsPrec :: Int -> CaseLabels λ l f' f -> ShowS # show :: CaseLabels λ l f' f -> String # showList :: [CaseLabels λ l f' f] -> ShowS # | |
type Atts (Inherited ConstantFold) (CaseLabels λ l _1 _2) | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (CaseLabels l l _1 _2) | |
Defined in Language.Oberon.ConstantFolder |
data ConditionalBranch λ l (f' :: Type -> Type) (f :: Type -> Type) #
Constructors
ConditionalBranch (f (Expression l l f' f')) (f (StatementSequence l l f' f')) |
Instances
Relational operators
Constructors
Equal | |
Unequal | |
Less | |
LessOrEqual | |
Greater | |
GreaterOrEqual | |
In |
Instances
Data RelOp | |
Defined in Language.Oberon.Abstract Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RelOp -> c RelOp # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RelOp # dataTypeOf :: RelOp -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c RelOp) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RelOp) # gmapT :: (forall b. Data b => b -> b) -> RelOp -> RelOp # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RelOp -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RelOp -> r # gmapQ :: (forall d. Data d => d -> u) -> RelOp -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> RelOp -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> RelOp -> m RelOp # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RelOp -> m RelOp # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RelOp -> m RelOp # | |
Show RelOp | |
Eq RelOp | |