Module Flambda2_term_basics.Rec_info_expr
include module type of struct include Flambda2_identifiers.Int_ids.Rec_info_expr end
type variable = Flambda2_identifiers.Int_ids.Variable.tmodule Unrolling_state =
Flambda2_identifiers.Int_ids.Rec_info_expr.Unrolling_statetype t = private Flambda2_identifiers.Int_ids.Rec_info_expr.t = | Const of {depth : int Flambda2_numbers.Or_infinity.t;unrolling : Unrolling_state.t;
}| Var of Flambda2_term_basics.Rec_info_expr.variable(*A variable of kind
*)Flambda_kind.rec_info.| Succ of Flambda2_term_basics.Rec_info_expr.t(*The next depth. If we inline an occurrence with depth
*)d, then in the inlined body, recursive references will have depthsucc d.| Unroll_to of int * Flambda2_term_basics.Rec_info_expr.t(*Indicate the depth to which unrolling should proceed. The unroll depth is decremented by
*)Succuntil it reaches zero, at which point all unrolling should stop.
An expression for the state of recursive inlining at a given occurrence. Forms the right-hand side of a Let_expr binding for a depth variable.
val initial : Flambda2_term_basics.Rec_info_expr.tval unknown : Flambda2_term_basics.Rec_info_expr.tval do_not_inline : Flambda2_term_basics.Rec_info_expr.tval const :
depth:int Flambda2_numbers.Or_infinity.t ->
unrolling:Unrolling_state.t ->
Flambda2_term_basics.Rec_info_expr.tval unroll_to :
int ->
Flambda2_term_basics.Rec_info_expr.t ->
Flambda2_term_basics.Rec_info_expr.tval is_obviously_initial : Flambda2_term_basics.Rec_info_expr.t -> boolval equal :
Flambda2_term_basics.Rec_info_expr.t ->
Flambda2_term_basics.Rec_info_expr.t ->
boolval hash : Flambda2_term_basics.Rec_info_expr.t -> intval map_depth_variables :
Flambda2_term_basics.Rec_info_expr.t ->
f:
(Flambda2_term_basics.Rec_info_expr.variable ->
Flambda2_term_basics.Rec_info_expr.variable) ->
Flambda2_term_basics.Rec_info_expr.tval erase_variables :
Flambda2_term_basics.Rec_info_expr.t ->
Flambda2_term_basics.Rec_info_expr.tval print :
Stdlib.Format.formatter ->
Flambda2_term_basics.Rec_info_expr.t ->
unitinclude Flambda2_nominal.Contains_names.S
with type t := Flambda2_term_basics.Rec_info_expr.t
val free_names :
Flambda2_term_basics.Rec_info_expr.t ->
Flambda2_nominal.Name_occurrences.tCompute the free names of a term. Such computation covers all kinds of bindable names (variables, continuations, ...)
val apply_renaming :
Flambda2_term_basics.Rec_info_expr.t ->
Flambda2_nominal.Renaming.t ->
Flambda2_term_basics.Rec_info_expr.tApply a renaming throughout a term.
include Flambda2_nominal.Contains_ids.S
with type t := Flambda2_term_basics.Rec_info_expr.t
val ids_for_export :
Flambda2_term_basics.Rec_info_expr.t ->
Flambda2_nominal.Ids_for_export.tGather all table identifiers to export them.
val free_names_in_types :
Flambda2_term_basics.Rec_info_expr.t ->
Flambda2_nominal.Name_occurrences.t