(** Celebration names keyed by language. The language set is open; entries are kept sorted by language code, so equal name sets have equal sexp forms. *) type t = (Lang.t * string) list [@@deriving sexp] val sexp_of_t : t -> Sexplib0.Sexp.t val t_of_sexp : Sexplib0.Sexp.t -> t val empty : t (** Canonicalises; on duplicate languages the last entry wins. *) val of_list : (Lang.t * string) list -> t val set : t -> Lang.t -> string -> t val remove : t -> Lang.t -> t val find : t -> Lang.t -> string option (** [find_first t langs] returns the name for the first language present. *) val find_first : t -> Lang.t list -> string option val to_list : t -> (Lang.t * string) list