|Anonymous | Login | Signup for a new account||2015-08-29 11:27 CEST|
|Main | My View | View Issues | Change Log | Roadmap|
|View Issue Details|
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0004952||OCaml||OCaml general||public||2010-01-02 19:49||2010-01-07 15:47|
|Priority||normal||Severity||feature||Reproducibility||have not tried|
|Target Version||Fixed in Version|
|Summary||0004952: wish: after functions in ordered types like Map or Set|
|Description||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.|
One could also wish the dual Set.S.previous.
Both functions have the following uses:
* the notion of good orders in math.
* in general, implement iterating co-routines (or iteration in CPS style) in Set-s or Map-s.
* 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..
Happy New Year 2010!
|Tags||No tags attached.|
|2010-01-02 19:49||Basile Starynkevitch||New Issue|
|2010-01-07 15:47||doligez||Status||new => acknowledged|
|Copyright © 2000 - 2011 MantisBT Group|