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: