Module Base__Set.Named
Named allows the validation of subset and equality relationships between sets. A Named.t is a record of a set and a name, where the name is used in error messages, and Named.is_subset and Named.equal validate subset and equality relationships respectively.
The error message for, e.g.,
Named.is_subset { set = set1; name = "set1" } ~of_:{set = set2; name = "set2" }looks like
("set1 is not a subset of set2" (invalid_elements (...elements of set1 - set2...)))so name should be a noun phrase that doesn't sound awkward in the above error message. Even though it adds verbosity, choosing names that start with the phrase "the set of" often makes the error message sound more natural.
type nonrec ('a, 'cmp) t={set : ('a, 'cmp) t;name : string;}
val is_subset : ('a, 'cmp) t -> of_:('a, 'cmp) t -> unit Base.Or_error.tis_subset t1 ~of_:t2returnsOk ()ift1is a subset oft2and a human-readable error otherwise.
val equal : ('a, 'cmp) t -> ('a, 'cmp) t -> unit Base.Or_error.tequal t1 t2returnsOk ()ift1is equal tot2and a human-readable error otherwise.