module TypeChecker: sig .. end
This is the top of the pyramid: the module that actually performs
type-checking.
val check_declaration_group : TypeCore.env ->
ExpressionsCore.definitions ->
ExpressionsCore.toplevel_item list ->
TypeCore.env * ExpressionsCore.toplevel_item list *
(Variable.name * TypeCore.var) list
check_declaration_group env declarations items type-checks a set of
top-level declarations; in order to do that, it will end up opening certain
binders, which is why it takes a list of items which will be correctly
transformed so as to refer to the variables that have been opened. It returns
an environment, the transformed items, and the list of opened variables.
val check_function_call : TypeCore.env ->
?annot:TypeCore.typ ->
TypeCore.var -> TypeCore.var -> TypeCore.env * TypeCore.typ