Il would be quite useful to be able to get, inside a Map, the entry (if any) after a given key.

So I would dream of an additional function inside Map.S

(** [after k m] retrieve the next key, that is the lowest [nk] such that the map [m] contains a binding for [nk] and with [nk] compared greater than [k]. If no such key exist, raises [Not_found] **)
val after: key -> 'a t -> key

Likewise, it would be useful to be able to get, inside a Set, the element (if any) next to a given one.

So I would dream of an additional function inside Set.S

(** [next x s] returns the element [y] after the given [x] in set [s], or raises [Not_found] if no such element exist (i.e. if [s] is empty or if [x] is the maximal element. *)
val next: elt -> t -> elt

Additional Information

The wished Set.S.next can be defined using Set.S.split (but that might not be efficient) and Set.S.min.

* in particular, they would be quite useful in some graphical interface applications. For example, suppose one code an editor using LabGtk & GText.buffer & GText.view. If one wants to have some sensitive words or text fragments, it would be useful to find e.g. the iter after a given line, etc..