Flambda_iterators
val apply_on_subexpressions :
(Flambda.t -> unit) ->
(Flambda.named -> unit) ->
Flambda.t ->
unit
Apply the given functions to the immediate subexpressions of the given Flambda expression. For avoidance of doubt, if a subexpression is Expr
, it is passed to the function taking Flambda.named
, rather than being followed and passed to the function taking Flambda.t
.
val map_subexpressions :
(Flambda.t -> Flambda.t) ->
(Variable.t -> Flambda.named -> Flambda.named) ->
Flambda.t ->
Flambda.t
val iter : (Flambda.t -> unit) -> (Flambda.named -> unit) -> Flambda.t -> unit
val iter_on_named :
(Flambda.t -> unit) ->
(Flambda.named -> unit) ->
Flambda.named ->
unit
val iter_named : (Flambda.named -> unit) -> Flambda.t -> unit
val iter_named_on_named : (Flambda.named -> unit) -> Flambda.named -> unit
val iter_toplevel :
(Flambda.t -> unit) ->
(Flambda.named -> unit) ->
Flambda.t ->
unit
iter_toplevel f t
applies f
on every toplevel subexpression of t
. In particular, it never applies f
to the body of a function (which will always be contained within an Set_of_closures
expression).
val iter_named_toplevel :
(Flambda.t -> unit) ->
(Flambda.named -> unit) ->
Flambda.named ->
unit
val iter_on_sets_of_closures :
(Flambda.set_of_closures -> unit) ->
Flambda.t ->
unit
val iter_on_set_of_closures_of_program :
Flambda.program ->
f:(constant:bool -> Flambda.set_of_closures -> unit) ->
unit
val iter_all_immutable_let_and_let_rec_bindings :
Flambda.t ->
f:(Variable.t -> Flambda.named -> unit) ->
unit
val iter_all_toplevel_immutable_let_and_let_rec_bindings :
Flambda.t ->
f:(Variable.t -> Flambda.named -> unit) ->
unit
val iter_exprs_at_toplevel_of_program :
Flambda.program ->
f:(Flambda.t -> unit) ->
unit
val iter_named_of_program :
Flambda.program ->
f:(Flambda.named -> unit) ->
unit
val iter_constant_defining_values_on_program :
Flambda.program ->
f:(Flambda.constant_defining_value -> unit) ->
unit
val iter_apply_on_program :
Flambda.program ->
f:(Flambda.apply -> unit) ->
unit
val map :
(Flambda.t -> Flambda.t) ->
(Flambda.named -> Flambda.named) ->
Flambda.t ->
Flambda.t
val map_named : (Flambda.named -> Flambda.named) -> Flambda.t -> Flambda.t
val map_toplevel :
(Flambda.t -> Flambda.t) ->
(Flambda.named -> Flambda.named) ->
Flambda.t ->
Flambda.t
val map_toplevel_named :
(Flambda.named -> Flambda.named) ->
Flambda.t ->
Flambda.t
val map_symbols_on_set_of_closures :
Flambda.set_of_closures ->
f:(Symbol.t -> Symbol.t) ->
Flambda.set_of_closures
val map_toplevel_sets_of_closures :
Flambda.t ->
f:(Flambda.set_of_closures -> Flambda.set_of_closures) ->
Flambda.t
val map_apply : Flambda.t -> f:(Flambda.apply -> Flambda.apply) -> Flambda.t
val map_function_bodies :
Flambda.set_of_closures ->
f:(Flambda.t -> Flambda.t) ->
Flambda.set_of_closures
val map_sets_of_closures :
Flambda.t ->
f:(Flambda.set_of_closures -> Flambda.set_of_closures) ->
Flambda.t
val map_sets_of_closures_of_program :
Flambda.program ->
f:(Flambda.set_of_closures -> Flambda.set_of_closures) ->
Flambda.program
val map_project_var_to_expr_opt :
Flambda.t ->
f:(Flambda.project_var -> Flambda.t option) ->
Flambda.t
val map_project_var_to_named_opt :
Flambda.t ->
f:(Flambda.project_var -> Flambda.named option) ->
Flambda.t
val map_exprs_at_toplevel_of_program :
Flambda.program ->
f:(Flambda.t -> Flambda.t) ->
Flambda.program
val map_named_of_program :
Flambda.program ->
f:(Variable.t -> Flambda.named -> Flambda.named) ->
Flambda.program
val map_all_immutable_let_and_let_rec_bindings :
Flambda.t ->
f:(Variable.t -> Flambda.named -> Flambda.named) ->
Flambda.t
val fold_function_decls_ignoring_stubs :
Flambda.set_of_closures ->
init:'a ->
f:
(fun_var:Variable.t ->
function_decl:Flambda.function_declaration ->
'a ->
'a) ->
'a