Variable.t is the equivalent of a non-persistent
Ident.t in the
Flambda tree. It wraps an
Ident.t together with its source
compilation_unit. As such, it is unique within a whole program, not just one compilation unit.
Introducing a new type helps in tracing the source of identifiers when debugging the inliner. It also avoids Ident renaming when importing cmx files.
include Identifiable.Thing with type t := T.t
include Hashtbl.HashedType with type t := T.t
val hash : T.t -> int
A hashing function on keys. It must be such that if two keys are equal according to
equal, then they have identical hash values as computed by
hash. Examples: suitable (
hash) pairs for arbitrary key types include
Hashtbl.hash) for comparing objects by structure (provided objects do not contain floats)
(fun x y -> compare x y = 0),
Hashtbl.hash) for comparing objects by structure and handling
Hashtbl.hash) for comparing objects by physical equality (e.g. for mutable or cyclic objects).
include Map.OrderedType with type t := T.t
A total ordering function over the keys. This is a two-argument function
f such that
f e1 e2 is zero if the keys
e2 are equal,
f e1 e2 is strictly negative if
e1 is smaller than
f e1 e2 is strictly positive if
e1 is greater than
e2. Example: a suitable ordering function is the generic structural comparison function
val name : t -> string
val unique_name : t -> string
val debug_when_stamp_matches : t -> stamp:int -> f:(unit -> unit) -> unit
If the given variable has the given stamp, call the user-supplied function. For debugging purposes only.