add CCMap.add_{list,seq}

This commit is contained in:
Simon Cruanes 2015-10-28 15:41:06 +01:00
parent 431c3a1e53
commit 344844ff9f
2 changed files with 19 additions and 5 deletions

View file

@ -44,10 +44,16 @@ module type S = sig
val of_seq : (key * 'a) sequence -> 'a t 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 to_seq : 'a t -> (key * 'a) sequence
val of_list : (key * 'a) list -> 'a t 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 to_list : 'a t -> (key * 'a) list
val pp : ?start:string -> ?stop:string -> ?arrow:string -> ?sep:string -> val pp : ?start:string -> ?stop:string -> ?arrow:string -> ?sep:string ->
@ -73,17 +79,19 @@ module Make(O : Map.OrderedType) = struct
| None -> remove k m | None -> remove k m
| Some v' -> add k v' m | Some v' -> add k v' m
let of_seq s = let add_seq m s =
let m = ref empty in let m = ref m in
s (fun (k,v) -> m := add k v !m); s (fun (k,v) -> m := add k v !m);
!m !m
let of_seq s = add_seq empty s
let to_seq m yield = let to_seq m yield =
iter (fun k v -> yield (k,v)) m iter (fun k v -> yield (k,v)) m
let of_list l = let add_list m l = List.fold_left (fun m (k,v) -> add k v m) m l
List.fold_left
(fun m (k,v) -> add k v m) empty l let of_list l = add_list empty l
let to_list m = let to_list m =
fold (fun k v acc -> (k,v)::acc) m [] fold (fun k v acc -> (k,v)::acc) m []

View file

@ -47,10 +47,16 @@ module type S = sig
val of_seq : (key * 'a) sequence -> 'a t 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 to_seq : 'a t -> (key * 'a) sequence
val of_list : (key * 'a) list -> 'a t 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 to_list : 'a t -> (key * 'a) list
val pp : ?start:string -> ?stop:string -> ?arrow:string -> ?sep:string -> val pp : ?start:string -> ?stop:string -> ?arrow:string -> ?sep:string ->