mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 03:05:28 -05:00
doc/CCHeap: reorder conversion functions
This commit is contained in:
parent
02ac5bd78a
commit
6bd5d3aacf
2 changed files with 78 additions and 78 deletions
|
|
@ -89,21 +89,11 @@ module type S = sig
|
|||
|
||||
(** {2 Conversions} *)
|
||||
|
||||
val to_list : t -> elt list
|
||||
(** Return the elements of the heap, in no particular order. *)
|
||||
|
||||
val to_list_sorted : t -> elt list
|
||||
(** Return the elements in increasing order.
|
||||
@since 1.1 *)
|
||||
|
||||
val add_list : t -> elt list -> t
|
||||
(** Add the elements of the list to the heap. An element occurring several
|
||||
times will be added that many times to the heap.
|
||||
@since 0.16 *)
|
||||
|
||||
val of_list : elt list -> t
|
||||
(** [of_list l] is [add_list empty l]. Complexity: [O(n log n)]. *)
|
||||
|
||||
val add_iter : t -> elt iter -> t
|
||||
(** Like {!add_list}.
|
||||
@since 2.8 *)
|
||||
|
|
@ -112,6 +102,12 @@ module type S = sig
|
|||
(** Like {!add_list}.
|
||||
@since 2.8 *)
|
||||
|
||||
val add_gen : t -> elt gen -> t
|
||||
(** @since 0.16 *)
|
||||
|
||||
val of_list : elt list -> t
|
||||
(** [of_list l] is [add_list empty l]. Complexity: [O(n log n)]. *)
|
||||
|
||||
val of_iter : elt iter -> t
|
||||
(** Build a heap from a given [iter]. Complexity: [O(n log n)].
|
||||
@since 2.8 *)
|
||||
|
|
@ -120,6 +116,12 @@ module type S = sig
|
|||
(** Build a heap from a given [Seq.t]. Complexity: [O(n log n)].
|
||||
@since 2.8 *)
|
||||
|
||||
val of_gen : elt gen -> t
|
||||
(** Build a heap from a given [gen]. Complexity: [O(n log n)]. *)
|
||||
|
||||
val to_list : t -> elt list
|
||||
(** Return the elements of the heap, in no particular order. *)
|
||||
|
||||
val to_iter : t -> elt iter
|
||||
(** Return a [iter] of the elements of the heap.
|
||||
@since 2.8 *)
|
||||
|
|
@ -128,6 +130,13 @@ module type S = sig
|
|||
(** Return a [Seq.t] of the elements of the heap.
|
||||
@since 2.8 *)
|
||||
|
||||
val to_gen : t -> elt gen
|
||||
(** Return a [gen] of the elements of the heap. *)
|
||||
|
||||
val to_list_sorted : t -> elt list
|
||||
(** Return the elements in increasing order.
|
||||
@since 1.1 *)
|
||||
|
||||
val to_iter_sorted : t -> elt iter
|
||||
(** Iterate on the elements, in increasing order.
|
||||
@since 2.8 *)
|
||||
|
|
@ -136,15 +145,6 @@ module type S = sig
|
|||
(** Iterate on the elements, in increasing order.
|
||||
@since 2.8 *)
|
||||
|
||||
val add_gen : t -> elt gen -> t
|
||||
(** @since 0.16 *)
|
||||
|
||||
val of_gen : elt gen -> t
|
||||
(** Build a heap from a given [gen]. Complexity: [O(n log n)]. *)
|
||||
|
||||
val to_gen : t -> elt gen
|
||||
(** Return a [gen] of the elements of the heap. *)
|
||||
|
||||
val to_tree : t -> elt ktree
|
||||
(** Return a [ktree] of the elements of the heap. *)
|
||||
|
||||
|
|
@ -283,24 +283,7 @@ module Make (E : PARTIAL_ORD) : S with type elt = E.t = struct
|
|||
|
||||
(** {2 Conversions} *)
|
||||
|
||||
let to_list h =
|
||||
let rec aux acc h =
|
||||
match h with
|
||||
| E -> acc
|
||||
| N (_, x, l, r) -> x :: aux (aux acc l) r
|
||||
in
|
||||
aux [] h
|
||||
|
||||
let to_list_sorted heap =
|
||||
let rec recurse acc h =
|
||||
match take h with
|
||||
| None -> List.rev acc
|
||||
| Some (h', x) -> recurse (x :: acc) h'
|
||||
in
|
||||
recurse [] heap
|
||||
|
||||
let add_list h l = List.fold_left add h l
|
||||
let of_list l = add_list empty l
|
||||
|
||||
let add_iter h i =
|
||||
let h = ref h in
|
||||
|
|
@ -312,8 +295,24 @@ module Make (E : PARTIAL_ORD) : S with type elt = E.t = struct
|
|||
Seq.iter (fun x -> h := insert x !h) seq;
|
||||
!h
|
||||
|
||||
let rec add_gen h g =
|
||||
match g () with
|
||||
| None -> h
|
||||
| Some x -> add_gen (add h x) g
|
||||
|
||||
let of_list l = add_list empty l
|
||||
let of_iter i = add_iter empty i
|
||||
let of_seq seq = add_seq empty seq
|
||||
let of_gen g = add_gen empty g
|
||||
|
||||
let to_list h =
|
||||
let rec aux acc h =
|
||||
match h with
|
||||
| E -> acc
|
||||
| N (_, x, l, r) -> x :: aux (aux acc l) r
|
||||
in
|
||||
aux [] h
|
||||
|
||||
let to_iter h k = iter k h
|
||||
|
||||
let to_seq h =
|
||||
|
|
@ -326,28 +325,6 @@ module Make (E : PARTIAL_ORD) : S with type elt = E.t = struct
|
|||
in
|
||||
aux [ h ]
|
||||
|
||||
let to_iter_sorted heap =
|
||||
let rec recurse h k =
|
||||
match take h with
|
||||
| None -> ()
|
||||
| Some (h', x) ->
|
||||
k x;
|
||||
recurse h' k
|
||||
in
|
||||
fun k -> recurse heap k
|
||||
|
||||
let rec to_seq_sorted h () =
|
||||
match take h with
|
||||
| None -> Seq.Nil
|
||||
| Some (h', x) -> Seq.Cons (x, to_seq_sorted h')
|
||||
|
||||
let rec add_gen h g =
|
||||
match g () with
|
||||
| None -> h
|
||||
| Some x -> add_gen (add h x) g
|
||||
|
||||
let of_gen g = add_gen empty g
|
||||
|
||||
let to_gen h =
|
||||
let stack = Stack.create () in
|
||||
Stack.push h stack;
|
||||
|
|
@ -365,6 +342,29 @@ module Make (E : PARTIAL_ORD) : S with type elt = E.t = struct
|
|||
in
|
||||
next
|
||||
|
||||
let to_list_sorted heap =
|
||||
let rec recurse acc h =
|
||||
match take h with
|
||||
| None -> List.rev acc
|
||||
| Some (h', x) -> recurse (x :: acc) h'
|
||||
in
|
||||
recurse [] heap
|
||||
|
||||
let to_iter_sorted heap =
|
||||
let rec recurse h k =
|
||||
match take h with
|
||||
| None -> ()
|
||||
| Some (h', x) ->
|
||||
k x;
|
||||
recurse h' k
|
||||
in
|
||||
fun k -> recurse heap k
|
||||
|
||||
let rec to_seq_sorted h () =
|
||||
match take h with
|
||||
| None -> Seq.Nil
|
||||
| Some (h', x) -> Seq.Cons (x, to_seq_sorted h')
|
||||
|
||||
let rec to_tree h () =
|
||||
match h with
|
||||
| E -> `Nil
|
||||
|
|
|
|||
|
|
@ -93,21 +93,11 @@ module type S = sig
|
|||
|
||||
(** {2 Conversions} *)
|
||||
|
||||
val to_list : t -> elt list
|
||||
(** [to_list h] returns the elements of the heap [h], in no particular order. *)
|
||||
|
||||
val to_list_sorted : t -> elt list
|
||||
(** [to_list_sorted h] returns the elements of the heap [h] in increasing order.
|
||||
@since 1.1 *)
|
||||
|
||||
val add_list : t -> elt list -> t
|
||||
(** [add_list h l] adds the elements of the list [l] into the heap [h].
|
||||
An element occurring several times will be added that many times to the heap.
|
||||
@since 0.16 *)
|
||||
|
||||
val of_list : elt list -> t
|
||||
(** [of_list l] is [add_list empty l]. Complexity: [O(n log n)]. *)
|
||||
|
||||
val add_iter : t -> elt iter -> t
|
||||
(** [add_iter h iter] is like {!add_list}.
|
||||
@since 2.8 *)
|
||||
|
|
@ -117,6 +107,13 @@ module type S = sig
|
|||
Renamed from [add_std_seq] since 3.0.
|
||||
@since 3.0 *)
|
||||
|
||||
val add_gen : t -> elt gen -> t
|
||||
(** [add_gen h gen] adds the gen [gen] to the heap [h].
|
||||
@since 0.16 *)
|
||||
|
||||
val of_list : elt list -> t
|
||||
(** [of_list l] is [add_list empty l]. Complexity: [O(n log n)]. *)
|
||||
|
||||
val of_iter : elt iter -> t
|
||||
(** [of_iter iter] builds a heap from a given [iter]. Complexity: [O(n log n)].
|
||||
@since 2.8 *)
|
||||
|
|
@ -126,6 +123,12 @@ module type S = sig
|
|||
Renamed from [of_seq] since 3.0.
|
||||
@since 3.0 *)
|
||||
|
||||
val of_gen : elt gen -> t
|
||||
(** [of_gen gen] builds a heap from a given [gen]. Complexity: [O(n log n)]. *)
|
||||
|
||||
val to_list : t -> elt list
|
||||
(** [to_list h] returns the elements of the heap [h], in no particular order. *)
|
||||
|
||||
val to_iter : t -> elt iter
|
||||
(** [to_iter h] returns a [iter] of the elements of the heap [h].
|
||||
@since 2.8 *)
|
||||
|
|
@ -135,6 +138,13 @@ module type S = sig
|
|||
Renamed from [to_std_seq] since 3.0.
|
||||
@since 3.0 *)
|
||||
|
||||
val to_gen : t -> elt gen
|
||||
(** [to_gen h] returns a [gen] of the elements of the heap [h]. *)
|
||||
|
||||
val to_list_sorted : t -> elt list
|
||||
(** [to_list_sorted h] returns the elements of the heap [h] in increasing order.
|
||||
@since 1.1 *)
|
||||
|
||||
val to_iter_sorted : t -> elt iter
|
||||
(** [to_iter_sorted h] returns a [iter] by iterating on the elements of [h],
|
||||
in increasing order.
|
||||
|
|
@ -146,16 +156,6 @@ module type S = sig
|
|||
Renamed from [to_std_seq_sorted] since 3.0.
|
||||
@since 3.0 *)
|
||||
|
||||
val add_gen : t -> elt gen -> t
|
||||
(** [add_gen h gen] adds the gen [gen] to the heap [h].
|
||||
@since 0.16 *)
|
||||
|
||||
val of_gen : elt gen -> t
|
||||
(** [of_gen gen] builds a heap from a given [gen]. Complexity: [O(n log n)]. *)
|
||||
|
||||
val to_gen : t -> elt gen
|
||||
(** [to_gen h] returns a [gen] of the elements of the heap [h]. *)
|
||||
|
||||
val to_tree : t -> elt ktree
|
||||
(** [to_tree h] returns a [ktree] of the elements of the heap [h]. *)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue