Module Parameter

Parameter.t carries a unique Variable.t used as function parameter. It can also carry annotations about the usage of the variable.

type t
type parameter = t
val wrap : Variable.t -> t

Make a parameter from a variable with default attributes

val var : t -> Variable.t
val rename : ?current_compilation_unit:Compilation_unit.t -> t -> t

Rename the inner variable of the parameter

val map_var : (Variable.t -> Variable.t) -> t -> t
module T : Identifiable.Thing with type t = t
module Set : sig ... end
include Identifiable.S with type t := t and module T := T and module Set := Set
include Identifiable.Thing with type t := T.t
include Hashtbl.HashedType with type t := T.t
val equal : T.t -> T.t -> bool

The equality predicate used to compare keys.

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.

The hash value of a key should remain constant as long as the key is in the table. In particular, if the hash function depends on mutable key data, then that data must not be mutated while the key is in the table. Similarly, as the hash function may be called while the table itself is being modified, it should avoid accessing the table as part of its computation.

Examples: suitable (equal, hash) pairs for arbitrary key types include

  • ((=), hash) for comparing objects by structure (provided objects do not contain floats)
  • ((fun x y -> compare x y = 0), hash) for comparing objects by structure and handling Stdlib.nan correctly
  • ((==), hash) for comparing objects by physical equality (e.g. for mutable or cyclic objects).
include Map.OrderedType with type t := T.t
val compare : T.t -> T.t -> int

A total ordering function over the keys. This is a two-argument function f such that f e1 e2 is zero if the keys e1 and e2 are equal, f e1 e2 is strictly negative if e1 is smaller than e2, and f e1 e2 is strictly positive if e1 is greater than e2. Example: a suitable ordering function is the generic structural comparison function Stdlib.compare.

val output : out_channel -> T.t -> unit
val print : Format.formatter -> T.t -> unit
module Map : Identifiable.Map with module T := T
module Tbl : Identifiable.Tbl with module T := T
module List : sig ... end