(** Stable celebration identifiers: non-empty [a-z0-9-], no leading or trailing hyphen. Also serve as lectionary keys. *) type t = private string val of_string : string -> (t, string) result (** For literals in code and tests. Raises [Invalid_argument] on a bad slug. *) val of_string_exn : string -> t val to_string : t -> string val compare : t -> t -> int val equal : t -> t -> bool (** Validating; raises [Of_sexp_error] on a malformed slug. *) val t_of_sexp : Sexplib0.Sexp.t -> t val sexp_of_t : t -> Sexplib0.Sexp.t