add CCSet.add_{list,seq}

This commit is contained in:
Simon Cruanes 2015-10-28 15:39:01 +01:00
parent 59835f8ef2
commit 431c3a1e53
2 changed files with 20 additions and 4 deletions

View file

@ -35,10 +35,16 @@ module type S = sig
val of_seq : elt sequence -> t
val add_seq : t -> elt sequence -> t
(** @since NEXT_RELEASE *)
val to_seq : t -> elt sequence
val of_list : elt list -> t
val add_list : t -> elt list -> t
(** @since NEXT_RELEASE *)
val to_list : t -> elt list
val pp : ?start:string -> ?stop:string -> ?sep:string ->
@ -51,14 +57,18 @@ end
module Make(O : Map.OrderedType) = struct
include Set.Make(O)
let of_seq s =
let set = ref empty in
s (fun x -> set := add x !set);
let add_seq set seq =
let set = ref set in
seq (fun x -> set := add x !set);
!set
let of_seq s = add_seq empty s
let to_seq s yield = iter yield s
let of_list l = List.fold_left (fun set x -> add x set) empty l
let add_list = List.fold_left (fun set x -> add x set)
let of_list l = add_list empty l
let to_list = elements

View file

@ -37,10 +37,16 @@ module type S = sig
val of_seq : elt sequence -> t
val add_seq : t -> elt sequence -> t
(** @since NEXT_RELEASE *)
val to_seq : t -> elt sequence
val of_list : elt list -> t
val add_list : t -> elt list -> t
(** @since NEXT_RELEASE *)
val to_list : t -> elt list
val pp : ?start:string -> ?stop:string -> ?sep:string ->