blob: 6f9f27302969f0719b098ed14a52eac17533a585 (
plain) (
tree)
|
|
(** Attribute labels.
A label names an attribute of a record or a relation schema,
written [name:] in Sol source. Labels are the keys of every
{!Term.t} record, so the whole term algebra sits on them. *)
type t
(** A validated label. Values of this type always hold a well-formed
label name, by construction. *)
val of_string : string -> (t, [ `Invalid_label of string ]) result
(** The only way in. A well-formed label starts with a lowercase
letter, followed by letters, digits, or underscores. Everything
that builds or looks up record attributes goes through labels
made here. *)
val to_string : t -> string
(** The label name, without the colon. *)
val equal : t -> t -> bool
val compare : t -> t -> int
(** Total order on names. Gives records a canonical attribute order
regardless of how the source spelled them, which {!Term.equal}
and content addressing rely on. *)
val pp : Format.formatter -> t -> unit
(** Prints [name:], as in Sol source. *)
module Map : Map.S with type key = t
(** Attribute maps, used by {!Term.t} records. *)
|