From 191953feafdc731e6e0d476f517708c7d65219c9 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Mon, 30 Nov 2015 12:33:59 +0100 Subject: [PATCH] add `CCMap.{keys,values}` --- src/core/CCMap.ml | 14 ++++++++++++++ src/core/CCMap.mli | 8 ++++++++ 2 files changed, 22 insertions(+) diff --git a/src/core/CCMap.ml b/src/core/CCMap.ml index 0fdc6e9e..d9b752bb 100644 --- a/src/core/CCMap.ml +++ b/src/core/CCMap.ml @@ -53,6 +53,14 @@ module type S = sig val add_list : 'a t -> (key * 'a) list -> 'a t (** @since 0.14 *) + val keys : _ t -> key sequence + (** Iterate on keys only + @since NEXT_RELEASE *) + + val values : 'a t -> 'a sequence + (** Iterate on values only + @since NEXT_RELEASE *) + val to_list : 'a t -> (key * 'a) list val pp : ?start:string -> ?stop:string -> ?arrow:string -> ?sep:string -> @@ -88,6 +96,12 @@ module Make(O : Map.OrderedType) = struct let to_seq m yield = iter (fun k v -> yield (k,v)) m + let keys m yield = + iter (fun k _ -> yield k) m + + let values m yield = + iter (fun _ v -> yield v) m + let add_list m l = List.fold_left (fun m (k,v) -> add k v m) m l let of_list l = add_list empty l diff --git a/src/core/CCMap.mli b/src/core/CCMap.mli index 51ec28fc..b8353066 100644 --- a/src/core/CCMap.mli +++ b/src/core/CCMap.mli @@ -56,6 +56,14 @@ module type S = sig val add_list : 'a t -> (key * 'a) list -> 'a t (** @since 0.14 *) + val keys : _ t -> key sequence + (** Iterate on keys only + @since NEXT_RELEASE *) + + val values : 'a t -> 'a sequence + (** Iterate on values only + @since NEXT_RELEASE *) + val to_list : 'a t -> (key * 'a) list val pp : ?start:string -> ?stop:string -> ?arrow:string -> ?sep:string ->