Shared_ast.Program
val map_decl_ctx :
f:
(Shared_ast__.Definitions.naked_typ Catala_utils.Mark.pos ->
Shared_ast__.Definitions.naked_typ Catala_utils.Mark.pos) ->
Shared_ast__.Definitions.decl_ctx ->
Shared_ast__.Definitions.decl_ctx
val map_scopes_env :
f:
(('e Shared_ast__.Definitions.boxed -> 'e Shared_ast__.Definitions.boxed) ->
Shared_ast__.Definitions.ScopeName.t ->
'e Shared_ast__.Definitions.scope_body ->
'e Shared_ast__.Definitions.scope_body Bindlib.box) ->
'e Shared_ast__.Definitions.program ->
'e Shared_ast__.Definitions.program
Maps on the scopes in the program, passing along an "environment" in the form of a function binding all toplevel and scope definitions to their variables in the argument expression
val map_exprs :
?typ:
(Shared_ast__.Definitions.naked_typ Catala_utils.Mark.pos ->
Shared_ast__.Definitions.naked_typ Catala_utils.Mark.pos) ->
f:('expr1 -> 'expr2 Shared_ast__.Definitions.boxed) ->
varf:('expr1 Var.t -> 'expr2 Var.t) ->
'expr1 Shared_ast__.Definitions.program ->
'expr2 Shared_ast__.Definitions.program
If typ
is specified, definitions in decl_ctx
are also processed
val fold_exprs :
f:
('a ->
'expr ->
Shared_ast__.Definitions.naked_typ Catala_utils.Mark.pos ->
'a) ->
init:'a ->
'expr Shared_ast__.Definitions.program ->
'a
val get_scope_body :
((_ Shared_ast__.Definitions.any, _ Shared_ast__.Definitions.any, 't)
Shared_ast__.Definitions.base_gexpr,
't Shared_ast__.Definitions.mark)
Catala_utils.Mark.ed as 'e
Shared_ast__.Definitions.program ->
Shared_ast__.Definitions.ScopeName.t ->
'e Shared_ast__.Definitions.scope_body
val untype :
(('a Shared_ast__.Definitions.any, 'a Shared_ast__.Definitions.any, _)
Shared_ast__.Definitions.base_gexpr,
_ Shared_ast__.Definitions.mark)
Catala_utils.Mark.ed
Shared_ast__.Definitions.program ->
(('a, 'a, Shared_ast__.Definitions.untyped)
Shared_ast__.Definitions.base_gexpr,
Shared_ast__.Definitions.untyped Shared_ast__.Definitions.mark)
Catala_utils.Mark.ed
Shared_ast__.Definitions.program
val to_expr :
((_ Shared_ast__.Definitions.any, _ Shared_ast__.Definitions.any, _)
Shared_ast__.Definitions.base_gexpr,
_ Shared_ast__.Definitions.mark)
Catala_utils.Mark.ed as 'e
Shared_ast__.Definitions.program ->
Shared_ast__.Definitions.ScopeName.t ->
'e Shared_ast__.Definitions.boxed
Usage: build_whole_program_expr program main_scope
builds an expression corresponding to the main program and returning the main scope as a function.
val modules_to_list :
Shared_ast__.Definitions.module_tree_node Catala_utils.Uid.Module.Map.t ->
(Catala_utils.Uid.Module.t * Shared_ast__.Definitions.module_intf_id) list
Returns a list of used modules, in topological order ; the boolean indicates if the module is external