Safe Haskell | None |
---|---|
Language | Haskell2010 |
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) = 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 #
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 #
ProcedureHeading Ident (Maybe (f (FormalParameters l l f' f'))) |
Instances
data Variant λ l f' f Source #
Variant (f (CaseLabels l l f' f')) (ZipList (f (CaseLabels l l f' f'))) (ZipList (f (FieldList l l f' f'))) |
Instances
data FieldList λ l f' f Source #
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
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
data Designator λ l f' f Source #
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
data Expression λ l f' f Source #
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
Eq (QualIdent l) Source # | |
Data l => Data (QualIdent l) Source # | |
Defined in Language.Modula2.AST 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 # | |
Defined in Language.Modula2.AST | |
Show (QualIdent l) Source # | |
Pretty (QualIdent l) Source # | |
Defined in Language.Modula2.Pretty |
data Declaration (full :: Bool) λ l (f' :: * -> *) (f :: * -> *) where Source #
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 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 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 |
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, 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 ~ (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, 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, 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 ~ (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, 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 # | |
Functor (Module λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Modula2.AST | |
Foldable (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 | |
Apply (Module λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Modula2.AST (<*>) :: 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 # | |
Defined in Language.Modula2.ConstantFolder ($) :: Auto ConstantFold -> Domain (Auto ConstantFold) (Module l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) -> Codomain (Auto ConstantFold) (Module l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) # | |
(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 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 (Auto ConstantFold)) (Module λ l _1 _2) Source # | |
Defined in Language.Modula2.ConstantFolder | |
type Atts (Synthesized (Auto ConstantFold)) (Module λ l _1 _2) Source # | |
Defined in Language.Modula2.ConstantFolder |
Instances
Eq (IdentDef l) Source # | |
Data l => Data (IdentDef l) Source # | |
Defined in Language.Modula2.AST 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 # | |
Show (IdentDef l) Source # | |
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''.
Instances
data Value λ l (f' :: Type -> Type) (f :: Type -> Type) #
Instances
Transformation t => Functor t (Value λ l) | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m) => Foldable t (Value λ l) | |
(Transformation t, Codomain t ~ Compose m f, Applicative m) => Traversable t (Value λ l) | |
Transformation t => Functor t (Value λ l f') | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m) => Foldable t (Value λ l f') | |
(Transformation t, Codomain t ~ Compose m f, Applicative m) => Traversable t (Value λ l f') | |
Functor (Auto ConstantFold) (Value l l) | |
Defined in Language.Oberon.ConstantFolder (<$>) :: Auto ConstantFold -> Domain (Auto ConstantFold) (Value l l (Domain (Auto ConstantFold)) (Domain (Auto ConstantFold))) -> Codomain (Auto ConstantFold) (Value l l (Codomain (Auto ConstantFold)) (Codomain (Auto ConstantFold))) # | |
Functor (Value λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
Foldable (Value λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
Traversable (Value λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
Apply (Value λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST (<*>) :: 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) | |
(Typeable λ, Typeable l, Typeable f, Typeable f') => Data (Value λ l f' f) | |
Defined in Language.Oberon.AST 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) | |
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 (Auto ConstantFold)) (Value l l _1 _2) | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized (Auto ConstantFold)) (Value l l _1 _2) | |
Defined in Language.Oberon.ConstantFolder |
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')) |
Instances
(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 ~ (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, 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, 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 ~ (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, 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') | |
(Functor (Auto ConstantFold) (Element l l), At (Auto ConstantFold) (Element l l (Codomain (Auto ConstantFold)) (Codomain (Auto ConstantFold)))) => Functor (Auto ConstantFold) (Element l l) | |
Defined in Language.Oberon.ConstantFolder (<$>) :: Auto ConstantFold -> Domain (Auto ConstantFold) (Element l l (Domain (Auto ConstantFold)) (Domain (Auto ConstantFold))) -> Codomain (Auto ConstantFold) (Element l l (Codomain (Auto ConstantFold)) (Codomain (Auto ConstantFold))) # | |
Functor (Element λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
Foldable (Element λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
Traversable (Element λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
Apply (Element λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST (<*>) :: 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))) | |
Defined in Language.Oberon.ConstantFolder ($) :: Auto ConstantFold -> Domain (Auto ConstantFold) (Element l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) -> Codomain (Auto ConstantFold) (Element l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) # | |
Eq (f (Expression l l f' f')) => Eq (Element λ l f' f) | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (Expression l l f' f'))) => Data (Element λ l f' f) | |
Defined in Language.Oberon.AST 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) | |
type Atts (Inherited (Auto ConstantFold)) (Element l l _1 _2) | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized (Auto ConstantFold)) (Element l l _1 _2) | |
Defined in Language.Oberon.ConstantFolder |
data FormalParameters λ l (f' :: Type -> Type) (f :: Type -> Type) #
FormalParameters (ZipList (f (FPSection l l f' f'))) (Maybe (ReturnType l)) |
Instances
data FPSection λ l (f' :: Type -> Type) (f :: Type -> Type) #
Instances
(Transformation t, Functor t (Type l l)) => Functor t (FPSection λ l) | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Type l l)) => Foldable t (FPSection λ l) | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (Type l l)) => Traversable t (FPSection λ l) | |
(Transformation t, At t (Type l l f' f')) => Functor t (FPSection λ l f') | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Type l l f' f')) => Foldable 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') | |
(Functor (Auto ConstantFold) (FPSection l l), At (Auto ConstantFold) (FPSection l l (Codomain (Auto ConstantFold)) (Codomain (Auto ConstantFold)))) => Functor (Auto ConstantFold) (FPSection l l) | |
Defined in Language.Oberon.ConstantFolder (<$>) :: Auto ConstantFold -> Domain (Auto ConstantFold) (FPSection l l (Domain (Auto ConstantFold)) (Domain (Auto ConstantFold))) -> Codomain (Auto ConstantFold) (FPSection l l (Codomain (Auto ConstantFold)) (Codomain (Auto ConstantFold))) # | |
Functor (FPSection λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
Foldable (FPSection λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
Traversable (FPSection λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
Apply (FPSection λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST (<*>) :: 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 # | |
Attribution (Auto ConstantFold) (FPSection l l) Sem Placed => At (Auto ConstantFold) (FPSection l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) | |
Defined in Language.Oberon.ConstantFolder ($) :: Auto ConstantFold -> Domain (Auto ConstantFold) (FPSection l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) -> Codomain (Auto ConstantFold) (FPSection l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) # | |
(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 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 (Auto ConstantFold)) (FPSection l l _1 _2) | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized (Auto ConstantFold)) (FPSection l l _1 _2) | |
Defined in Language.Oberon.ConstantFolder |
data Block λ l (f' :: Type -> Type) (f :: Type -> Type) #
Block (ZipList (f (Declaration l l f' f'))) (Maybe (f (StatementSequence l l f' f'))) |
Instances
newtype StatementSequence λ l (f' :: Type -> Type) (f :: Type -> Type) #
StatementSequence (ZipList (f (Statement l l f' f'))) |
Instances
data Case λ l (f' :: Type -> Type) (f :: Type -> Type) #
Case (f (CaseLabels l l f' f')) (ZipList (f (CaseLabels l l f' f'))) (f (StatementSequence l l f' f')) |
Instances
(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 ~ (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, 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, 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 ~ (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, 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') | |
(Functor (Auto ConstantFold) (Case l l), At (Auto ConstantFold) (Case l l (Codomain (Auto ConstantFold)) (Codomain (Auto ConstantFold)))) => Functor (Auto ConstantFold) (Case l l) | |
Defined in Language.Oberon.ConstantFolder (<$>) :: Auto ConstantFold -> Domain (Auto ConstantFold) (Case l l (Domain (Auto ConstantFold)) (Domain (Auto ConstantFold))) -> Codomain (Auto ConstantFold) (Case l l (Codomain (Auto ConstantFold)) (Codomain (Auto ConstantFold))) # | |
Functor (Case λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
Foldable (Case λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
Traversable (Case λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST | |
Apply (Case λ l f' :: (Type -> Type) -> Type) | |
Defined in Language.Oberon.AST (<*>) :: 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 # | |
Attribution (Auto ConstantFold) (Case l l) Sem Placed => At (Auto ConstantFold) (Case l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) | |
Defined in Language.Oberon.ConstantFolder ($) :: Auto ConstantFold -> Domain (Auto ConstantFold) (Case l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) -> Codomain (Auto ConstantFold) (Case l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) # | |
(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 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 (Auto ConstantFold)) (Case l l _1 _2) | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized (Auto ConstantFold)) (Case l l _1 _2) | |
Defined in Language.Oberon.ConstantFolder |
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')) |
Instances
data ConditionalBranch λ l (f' :: Type -> Type) (f :: Type -> Type) #
ConditionalBranch (f (Expression l l f' f')) (f (StatementSequence l l f' f')) |
Instances
Relational operators
Instances
Eq RelOp | |
Data RelOp | |
Defined in Language.Oberon.Abstract 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 | |