Module type Uid.Id

Identifiers have abstract types, but are comparable so they can be used as keys in maps or sets. Their underlying information can be retrieved at any time.

type t
type info
val fresh : info -> t
val get_info : t -> info
val map_info : (info -> info) -> t -> t
val compare : t -> t -> int
val equal : t -> t -> bool
val format : Stdlib.Format.formatter -> t -> unit
val to_string : t -> string
val id : t -> int

Returns the unique ID of the identifier

val hash : t -> Hash.t

While id returns a unique ID valable for a given Uid instance within a given run of catala, this is a raw hash of the identifier string. Therefore, it may collide within a given program, but remains meaninful across separate compilations.

module Set : Stdlib.Set.S with type elt = t
module Map : Map.S with type key = t