jon.recoil.org

Module Flambda2_bound_identifiers.Bound_static

The left-hand sides of Let-expressions that bind statically-allocated constants and pieces of code. Used via Bound_pattern in the term language.

module Pattern : sig ... end
type t
val empty : t
val create : Pattern.t list -> t

All recursive cycles between the names bound by the provided pattern(s) must go through at least one code ID. (So for example the declaration of just a block that points to itself is forbidden.)

val singleton : Pattern.t -> t
val to_list : t -> Pattern.t list
val binds_code : t -> bool
val binds_symbols : t -> bool
val symbols_being_defined : t -> Flambda2_identifiers.Symbol.Set.t
val code_being_defined : t -> Flambda2_identifiers.Code_id.Set.t
val everything_being_defined : t -> Flambda2_identifiers.Code_id_or_symbol.Set.t
val everything_being_defined_as_list : t -> Flambda2_identifiers.Code_id_or_symbol.t list
val concat : t -> t -> t
val gc_roots : t -> Flambda2_identifiers.Symbol.t list
val print : Format.formatter -> t -> unit
include Flambda2_nominal.Contains_names.S with type t := t

Compute the free names of a term. Such computation covers all kinds of bindable names (variables, continuations, ...)

val apply_renaming : t -> Flambda2_nominal.Renaming.t -> t

Apply a renaming throughout a term.

include Flambda2_nominal.Contains_ids.S with type t := t
val ids_for_export : t -> Flambda2_nominal.Ids_for_export.t

Gather all table identifiers to export them.