Value_rec_compilerOverview of the compilation scheme
Given a set of recursive definitions, we sort them into four categories:
Dynamic by Value_rec_check). These are compiled as regular let-bindings, inserted before the rest.Static, but cannot be pre-allocated and cannot end up actually using recursive values (i.e. let rec x = let _ = x in 0). These are compiled to regular bindings too, modulo some renaming to remove references to recursive variables.More detailed comments are available in the implementation.
val compile_letrec :
(Ident.t
* Lambda.debug_uid
* Value_rec_types.recursive_binding_kind
* Lambda.lambda)
list ->
Lambda.lambda ->
Lambda.lambda