From 344844ff9f8ecafa815cd67effac6464d903f656 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Wed, 28 Oct 2015 15:41:06 +0100 Subject: [PATCH] add `CCMap.add_{list,seq}` --- src/core/CCMap.ml | 18 +++++++++++++----- src/core/CCMap.mli | 6 ++++++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/core/CCMap.ml b/src/core/CCMap.ml index 6b63e834..47a77cc4 100644 --- a/src/core/CCMap.ml +++ b/src/core/CCMap.ml @@ -44,10 +44,16 @@ module type S = sig val of_seq : (key * 'a) sequence -> 'a t + val add_seq : 'a t -> (key * 'a) sequence -> 'a t + (** @since NEXT_RELEASE *) + val to_seq : 'a t -> (key * 'a) sequence val of_list : (key * 'a) list -> 'a t + val add_list : 'a t -> (key * 'a) list -> 'a t + (** @since NEXT_RELEASE *) + val to_list : 'a t -> (key * 'a) list val pp : ?start:string -> ?stop:string -> ?arrow:string -> ?sep:string -> @@ -73,17 +79,19 @@ module Make(O : Map.OrderedType) = struct | None -> remove k m | Some v' -> add k v' m - let of_seq s = - let m = ref empty in + let add_seq m s = + let m = ref m in s (fun (k,v) -> m := add k v !m); !m + let of_seq s = add_seq empty s + let to_seq m yield = iter (fun k v -> yield (k,v)) m - let of_list l = - List.fold_left - (fun m (k,v) -> add k v m) empty l + 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 let to_list m = fold (fun k v acc -> (k,v)::acc) m [] diff --git a/src/core/CCMap.mli b/src/core/CCMap.mli index 2ff1d310..cb7dceca 100644 --- a/src/core/CCMap.mli +++ b/src/core/CCMap.mli @@ -47,10 +47,16 @@ module type S = sig val of_seq : (key * 'a) sequence -> 'a t + val add_seq : 'a t -> (key * 'a) sequence -> 'a t + (** @since NEXT_RELEASE *) + val to_seq : 'a t -> (key * 'a) sequence val of_list : (key * 'a) list -> 'a t + val add_list : 'a t -> (key * 'a) list -> 'a t + (** @since NEXT_RELEASE *) + val to_list : 'a t -> (key * 'a) list val pp : ?start:string -> ?stop:string -> ?arrow:string -> ?sep:string ->