package ocaml-solo5-cross-aarch64
Install
dune-project
Dependency
Authors
Maintainers
Sources
md5=00e5f51d0ce72f7517f3b2a7f910c572
sha512=91f349384a8864076c3d1b0ce3f4e94aa54900cf51e2471d21427bb25cbffac606bcd754fa545f4b2c4516ea2b0731cb580ab30bdf1911c9e47ee24d7c88c863
doc/compiler-libs.optcomp/Freshening/Project_var/index.html
Module Freshening.Project_var
A table used for freshening of identifiers in Project_closure and Move_within_set_of_closures ("ids of closures"); and Project_var ("bound vars of closures") expressions.
This information is propagated bottom up and populated when inlining a function containing a closure declaration.
For instance, let f x = let g y = ... x ... in ... g.x ... (Project_var x) ... g 1 ... (Apply (Project_closure g ...))
If f is inlined, g is renamed. The approximation of g will carry this table such that later the access to the field x of g and selection of g in the closure can be substituted.
val empty : tval apply_closure_id : t -> Closure_id.t -> Closure_id.tFreshen a closure ID based on the given renaming. The same ID is returned if the renaming does not affect it. If dealing with approximations, you probably want to use Simple_value_approx.freshen_and_check_closure_id instead of this function.
val apply_var_within_closure :
t ->
Var_within_closure.t ->
Var_within_closure.tLike apply_closure_id, but for variables within closures.
val print : Format.formatter -> t -> unit