Flambda_iteratorsval apply_on_subexpressions : (Flambda.t -> unit) -> (Flambda.named -> unit) -> Flambda.t -> unitApply 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.tval iter : (Flambda.t -> unit) -> (Flambda.named -> unit) -> Flambda.t -> unitval iter_on_named : (Flambda.t -> unit) -> (Flambda.named -> unit) -> Flambda.named -> unitval iter_named : (Flambda.named -> unit) -> Flambda.t -> unitval iter_named_on_named : (Flambda.named -> unit) -> Flambda.named -> unitval iter_toplevel : (Flambda.t -> unit) -> (Flambda.named -> unit) -> Flambda.t -> unititer_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 -> unitval iter_on_sets_of_closures : (Flambda.set_of_closures -> unit) -> Flambda.t -> unitval iter_on_set_of_closures_of_program : Flambda.program -> f:(constant:bool -> Flambda.set_of_closures -> unit) -> unitval iter_all_immutable_let_and_let_rec_bindings : Flambda.t -> f:(Variable.t -> Flambda.named -> unit) -> unitval iter_all_toplevel_immutable_let_and_let_rec_bindings : Flambda.t -> f:(Variable.t -> Flambda.named -> unit) ->
unitval iter_exprs_at_toplevel_of_program : Flambda.program -> f:(Flambda.t -> unit) -> unitval iter_named_of_program : Flambda.program -> f:(Flambda.named -> unit) -> unitval iter_constant_defining_values_on_program : Flambda.program -> f:(Flambda.constant_defining_value -> unit) -> unitval iter_apply_on_program : Flambda.program -> f:(Flambda.apply -> unit) -> unitval map : (Flambda.t -> Flambda.t) -> (Flambda.named -> Flambda.named) -> Flambda.t -> Flambda.tval map_named : (Flambda.named -> Flambda.named) -> Flambda.t -> Flambda.tval map_toplevel : (Flambda.t -> Flambda.t) -> (Flambda.named -> Flambda.named) -> Flambda.t -> Flambda.tval map_toplevel_named : (Flambda.named -> Flambda.named) -> Flambda.t -> Flambda.tval map_symbols_on_set_of_closures : Flambda.set_of_closures -> f:(Symbol.t -> Symbol.t) -> Flambda.set_of_closuresval map_toplevel_sets_of_closures : Flambda.t -> f:(Flambda.set_of_closures -> Flambda.set_of_closures) -> Flambda.tval map_apply : Flambda.t -> f:(Flambda.apply -> Flambda.apply) -> Flambda.tval map_function_bodies : Flambda.set_of_closures -> f:(Flambda.t -> Flambda.t) -> Flambda.set_of_closuresval map_sets_of_closures : Flambda.t -> f:(Flambda.set_of_closures -> Flambda.set_of_closures) -> Flambda.tval map_sets_of_closures_of_program : Flambda.program -> f:(Flambda.set_of_closures -> Flambda.set_of_closures) -> Flambda.programval map_project_var_to_expr_opt : Flambda.t -> f:(Flambda.project_var -> Flambda.t option) -> Flambda.tval map_project_var_to_named_opt : Flambda.t -> f:(Flambda.project_var -> Flambda.named option) -> Flambda.tval map_exprs_at_toplevel_of_program : Flambda.program -> f:(Flambda.t -> Flambda.t) -> Flambda.programval map_named_of_program : Flambda.program -> f:(Variable.t -> Flambda.named -> Flambda.named) -> Flambda.programval map_all_immutable_let_and_let_rec_bindings : Flambda.t -> f:(Variable.t -> Flambda.named -> Flambda.named) -> Flambda.tval fold_function_decls_ignoring_stubs : Flambda.set_of_closures -> init:'a -> f:(fun_var:Variable.t ->
function_decl:Flambda.function_declaration -> 'a -> 'a) -> 'a