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 name
s that start with the phrase
"the set of" often makes the error message sound more natural.
val is_subset : ('a, 'cmp) t ‑> of_:('a, 'cmp) t ‑> unit Base.Or_error.t
is_subset t1 ~of_:t2
returns Ok ()
if t1
is a subset of t2
and a
human-readable error otherwise.
val equal : ('a, 'cmp) t ‑> ('a, 'cmp) t ‑> unit Base.Or_error.t
equal t1 t2
returns Ok ()
if t1
is equal to t2
and a human-readable
error otherwise.