package ocaml-solo5

  1. Overview
  2. Docs
OCaml cross-compiler to the freestanding Solo5 backend

Install

dune-project
 Dependency

Authors

Maintainers

Sources

v1.3.3.tar.gz
md5=47876167068345542f49279e8fd28896
sha512=272081ec51a6ed69c08e4e8fa64fee3df53fd84c66c0c07a653891c88b342cf74553e1c95711e4fbc18922c899a3448a649f3bd9858f8d89cae834ad2b67fffb

doc/compiler-libs.optcomp/Freshening/Project_var/index.html

Module Freshening.Project_var

type t

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 : t
val compose : earlier:t -> later:t -> t

Composition of two freshenings.

val apply_closure_id : t -> Closure_id.t -> Closure_id.t

Freshen 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.t

Like apply_closure_id, but for variables within closures.

val print : Format.formatter -> t -> unit