Perk.Typecheck
Typechecks a set of toplevel definitions, instancing the inferred types.
val library_functions : (Ast.perkident * Ast.perktype) list Stdlib.ref
List of library functions and their types : (perkident * perktype) list ref
val is_numerical : ('a * Ast.perktype_partial * 'b) -> bool
check if type is numerical
val numerical_rank : Ast.perktype -> int
provides an integer ranking of numerical types: higher values are least general types
val typecheck_program : Ast.topleveldef_a list -> Ast.topleveldef_a list
typechecks a set of toplevel definitions, instancing the inferred types
val typecheck_deferred_function : Ast.topleveldef_a -> Ast.topleveldef_a
Typechecks functions after everything else
val typecheck_topleveldef : Ast.topleveldef_a -> Ast.topleveldef_a
Typechecks toplevel definitions
val typecheck_command :
?retype:Ast.perktype option ->
Ast.command_a ->
Ast.command_a
Typechecks commands
val typecheck_expr :
?expected_return:Ast.perktype option ->
Ast.expr_a ->
Ast.expr_a * Ast.perktype
Typechecks expressions
val typecheck_expr_list :
Ast.expr_a list ->
Ast.perktype list ->
(Ast.expr_a * Ast.perktype) list
Typechecks parameters
val fill_nothing :
Ast.expr_a ->
Ast.perktype ->
Ast.perktype ->
Ast.expr_a * Ast.perktype
val match_types :
?coalesce:bool ->
?array_init:bool ->
Ast.perktype ->
Ast.perktype ->
Ast.perktype
Checks if two types are the same or not.
val match_type_list :
Ast.perktype list ->
(Ast.expr_a * Ast.perktype) list ->
Ast.perktype list
CHecks 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