Perk.TypecheckTypechecks a set of toplevel definitions, instancing the inferred types.
val library_functions : (Ast.perkident * Ast.perktype) list Stdlib.refList of library functions and their types : (perkident * perktype) list ref
val is_numerical : ('a * Ast.perktype_partial * 'b) -> boolcheck if type is numerical
val numerical_rank : Ast.perktype -> intprovides an integer ranking of numerical types: higher values are least general types
val typecheck_program : Ast.topleveldef_a list -> Ast.topleveldef_a listtypechecks a set of toplevel definitions, instancing the inferred types
val typecheck_deferred_function : Ast.topleveldef_a -> Ast.topleveldef_aTypechecks functions after everything else
val typecheck_topleveldef : Ast.topleveldef_a -> Ast.topleveldef_aTypechecks toplevel definitions
val typecheck_command :
?retype:Ast.perktype option ->
Ast.command_a ->
Ast.command_aTypechecks commands
val typecheck_expr :
?expected_return:Ast.perktype option ->
Ast.expr_a ->
Ast.expr_a * Ast.perktypeTypechecks expressions
val typecheck_expr_list :
Ast.expr_a list ->
Ast.perktype list ->
(Ast.expr_a * Ast.perktype) listTypechecks parameters
val fill_nothing :
Ast.expr_a ->
Ast.perktype ->
Ast.perktype ->
Ast.expr_a * Ast.perktypeval match_types :
?coalesce:bool ->
?array_init:bool ->
Ast.perktype ->
Ast.perktype ->
Ast.perktypeChecks if two types are the same or not.
val match_type_list :
Ast.perktype list ->
(Ast.expr_a * Ast.perktype) list ->
Ast.perktype listCHecks if an argument list and a type list have the same types elementwise.
val autocast :
Ast.expr_a ->
Ast.perktype ->
Ast.perktype option ->
Ast.expr_a * Ast.perktype