This library contains a version of FlatCurry's abstract syntax tree which can be annotated with arbitrary information due to a polymorphic type parameter. For instance, this could be used to annotate function declarations and expressions with their corresponding type.
For more information about the abstract syntax tree of FlatCurry
,
see the documentation of the respective module.
Author: Jonas Oberschweiber, Bjoern Peemoeller, Michael Hanus
Version: October 2015
Annotated FlatCurry program (corresponds to a module)
Constructors:
Arity of a function declaration
Type synonym: Arity = Int
Annotated function declaration
Constructors:
AFunc
:: QName -> Arity -> Visibility -> TypeExpr -> (ARule a) -> AFuncDecl a
Annotated function rule
Constructors:
Annotated expression
Constructors:
AVar
:: a -> VarIndex -> AExpr a
ALit
:: a -> Literal -> AExpr a
AComb
:: a -> CombType -> (QName,a) -> [AExpr a] -> AExpr a
ALet
:: a -> [((VarIndex,a),AExpr a)] -> (AExpr a) -> AExpr a
AFree
:: a -> [(VarIndex,a)] -> (AExpr a) -> AExpr a
AOr
:: a -> (AExpr a) -> (AExpr a) -> AExpr a
ACase
:: a -> CaseType -> (AExpr a) -> [ABranchExpr a] -> AExpr a
ATyped
:: a -> (AExpr a) -> TypeExpr -> AExpr a
Annotated case branch
Constructors:
Annotated pattern
Constructors: