package catala
Install
dune-project
Dependency
Authors
Maintainers
Sources
md5=1408a1cce45c7d5990b981e83e7589c2
sha512=eb3b923aa1f743378b4a05e30f50be5d180dc862a716270d747a90e469017f42fa5fc41352f02fbbf59cd2560f91c4f1b32cf38d80085b105d9387b0aed2039d
doc/catala.shared_ast/Shared_ast/Scope/index.html
Module Shared_ast.ScopeSource
Functions handling the code item structures of shared_ast, in particular the scopes
Traversal functions
val fold_left_lets :
f:('a -> 'e Shared_ast__.Definitions.scope_let -> 'e Var.t -> 'a) ->
init:'a ->
'e Shared_ast__.Definitions.scope_body_expr ->
'aUsage: fold_left_lets ~f:(fun acc scope_let scope_let_var -> ...) ~init scope_lets, where scope_let_var is the variable bound to the scope let in the next scope lets to be examined.
val fold_right_lets :
f:('expr1 Shared_ast__.Definitions.scope_let -> 'expr1 Var.t -> 'a -> 'a) ->
init:('expr1 -> 'a) ->
'expr1 Shared_ast__.Definitions.scope_body_expr ->
'aUsage: fold_right_lets ~f:(fun scope_let scope_let_var acc -> ...) ~init scope_lets, where scope_let_var is the variable bound to the scope let in the next scope lets to be examined (which are before in the program order).
val map_exprs_in_lets :
f:('expr1 -> 'expr2 Shared_ast__.Definitions.boxed) ->
varf:('expr1 Var.t -> 'expr2 Var.t) ->
'expr1 Shared_ast__.Definitions.scope_body_expr ->
'expr2 Shared_ast__.Definitions.scope_body_expr Bindlib.boxval fold_left :
f:('a -> 'expr1 Shared_ast__.Definitions.code_item -> 'expr1 Var.t -> 'a) ->
init:'a ->
'expr1 Shared_ast__.Definitions.code_item_list ->
'aUsage: fold_left ~f:(fun acc code_def code_var -> ...) ~init code_def, where code_var is the variable bound to the code item in the next code items to be examined.
val fold_right :
f:('expr1 Shared_ast__.Definitions.code_item -> 'expr1 Var.t -> 'a -> 'a) ->
init:'a ->
'expr1 Shared_ast__.Definitions.code_item_list ->
'aUsage: fold_right_scope ~f:(fun scope_def scope_var acc -> ...) ~init scope_def, where scope_var is the variable bound to the scope in the next scopes to be examined (which are before in the program order).
val map :
f:
('e1 Shared_ast__.Definitions.code_item ->
'e2 Shared_ast__.Definitions.code_item Bindlib.box) ->
varf:('e1 Var.t -> 'e2 Var.t) ->
'e1 Shared_ast__.Definitions.code_item_list ->
'e2 Shared_ast__.Definitions.code_item_list Bindlib.boxval map_ctx :
f:
('ctx ->
'e1 Shared_ast__.Definitions.code_item ->
'ctx * 'e2 Shared_ast__.Definitions.code_item Bindlib.box) ->
varf:('e1 Var.t -> 'e2 Var.t) ->
'ctx ->
'e1 Shared_ast__.Definitions.code_item_list ->
'e2 Shared_ast__.Definitions.code_item_list Bindlib.boxSimilar to map, but a context is passed left-to-right through the given function
val fold_map :
f:
('ctx ->
'e1 Var.t ->
'e1 Shared_ast__.Definitions.code_item ->
'ctx * 'e2 Shared_ast__.Definitions.code_item Bindlib.box) ->
varf:('e1 Var.t -> 'e2 Var.t) ->
'ctx ->
'e1 Shared_ast__.Definitions.code_item_list ->
'ctx * 'e2 Shared_ast__.Definitions.code_item_list Bindlib.boxval map_exprs :
f:('expr1 -> 'expr2 Shared_ast__.Definitions.boxed) ->
varf:('expr1 Var.t -> 'expr2 Var.t) ->
'expr1 Shared_ast__.Definitions.code_item_list ->
'expr2 Shared_ast__.Definitions.code_item_list Bindlib.boxThis is the main map visitor for all the expressions inside all the scopes of the program.
val get_body_mark :
((_, 'm Shared_ast__.Definitions.mark) Shared_ast__.Definitions.naked_gexpr,
'm Shared_ast__.Definitions.mark)
Catala_utils.Marked.t
Shared_ast__.Definitions.scope_body ->
'm Shared_ast__.Definitions.markConversions
val format :
?debug:bool ->
Shared_ast__.Definitions.decl_ctx ->
Format.formatter ->
(Shared_ast__.Definitions.ScopeName.t
* 'e Shared_ast__.Definitions.scope_body) ->
unitval to_expr :
Shared_ast__.Definitions.decl_ctx ->
(('a Shared_ast__.Definitions.any, 'm Shared_ast__.Definitions.mark)
Shared_ast__.Definitions.naked_gexpr,
'm Shared_ast__.Definitions.mark)
Catala_utils.Marked.t
Shared_ast__.Definitions.scope_body ->
'm Shared_ast__.Definitions.mark ->
(('a, 'm Shared_ast__.Definitions.mark) Shared_ast__.Definitions.naked_gexpr
Bindlib.box,
'm Shared_ast__.Definitions.mark)
Catala_utils.Marked.tUsage: to_expr ctx body scope_position where scope_position corresponds to the line of the scope declaration for instance.
val unfold :
Shared_ast__.Definitions.decl_ctx ->
(((_, 'm Shared_ast__.Definitions.mark) Shared_ast__.Definitions.naked_gexpr,
'm Shared_ast__.Definitions.mark)
Catala_utils.Marked.t as 'e)
Shared_ast__.Definitions.code_item_list ->
'm Shared_ast__.Definitions.mark ->
'e scope_name_or_var ->
'e Shared_ast__.Definitions.boxedval build_typ_from_sig :
Shared_ast__.Definitions.decl_ctx ->
Shared_ast__.Definitions.StructName.t ->
Shared_ast__.Definitions.StructName.t ->
Catala_utils.Pos.t ->
Shared_ast__.Definitions.naked_typ Catala_utils.Marked.posbuild_typ_from_sig ctx in_struct out_struct pos builds the arrow type for the specified scope