The options
type is used to make Accessors_generic
flexible as to whether a
comparator is required to be passed to certain functions.
The types of map
and filter_map
are subtle. The input set, ('a, _) set
,
reflects the fact that these functions take a set of *any* type, with any
comparator, while the output set, ('b, 'cmp) t
, reflects that the output set has
the particular 'cmp
of the creation function. The comparator can come in one of
three ways, depending on which set module is used
Set.map
-- comparator comes as an argumentSet.Poly.map
-- comparator is polymorphic comparisonFoo.Set.map
-- comparator is Foo.comparator