sig
module type Heap_ =
sig
type 'a elt_
type 'a heap
val empty : 'a Reins.Heaps.Heap_.heap
val is_empty : 'a Reins.Heaps.Heap_.heap -> bool
val singleton : 'a Reins.Heaps.Heap_.elt_ -> 'a Reins.Heaps.Heap_.heap
val insert :
'a Reins.Heaps.Heap_.elt_ ->
'a Reins.Heaps.Heap_.heap -> 'a Reins.Heaps.Heap_.heap
val merge :
'a Reins.Heaps.Heap_.heap ->
'a Reins.Heaps.Heap_.heap -> 'a Reins.Heaps.Heap_.heap
val find_min : 'a Reins.Heaps.Heap_.heap -> 'a Reins.Heaps.Heap_.elt_
val delete_min : 'a Reins.Heaps.Heap_.heap -> 'a Reins.Heaps.Heap_.heap
end
module type MonoHeapSig =
sig
type t
type elt
type 'a elt_ = elt
type 'a heap = t
val empty : 'a heap
val is_empty : 'a heap -> bool
val singleton : 'a elt_ -> 'a heap
val insert : 'a elt_ -> 'a heap -> 'a heap
val merge : 'a heap -> 'a heap -> 'a heap
val find_min : 'a heap -> 'a elt_
val delete_min : 'a heap -> 'a heap
val to_string : 'a heap -> string
end
module type MonoHeapSigFn =
functor (C : Types.Mono.Comparable) ->
sig
type t
type elt = C.t
type 'a elt_ = elt
type 'a heap = t
val empty : 'a heap
val is_empty : 'a heap -> bool
val singleton : 'a elt_ -> 'a heap
val insert : 'a elt_ -> 'a heap -> 'a heap
val merge : 'a heap -> 'a heap -> 'a heap
val find_min : 'a heap -> 'a elt_
val delete_min : 'a heap -> 'a heap
val to_string : 'a heap -> string
end
module type GenHeapSig =
sig
type t
type elt
type 'a elt_ = elt
type 'a heap = t
val empty : 'a heap
val is_empty : 'a heap -> bool
val singleton : 'a elt_ -> 'a heap
val insert : 'a elt_ -> 'a heap -> 'a heap
val merge : 'a heap -> 'a heap -> 'a heap
val find_min : 'a heap -> 'a elt_
val delete_min : 'a heap -> 'a heap
val to_string : 'a heap -> string
val gen : ?size:int -> Random.State.t -> t
end
module type GenHeapSigFn =
functor (C : Types.Mono.ArbitraryComparable) ->
sig
type t
type elt = C.t
type 'a elt_ = elt
type 'a heap = t
val empty : 'a heap
val is_empty : 'a heap -> bool
val singleton : 'a elt_ -> 'a heap
val insert : 'a elt_ -> 'a heap -> 'a heap
val merge : 'a heap -> 'a heap -> 'a heap
val find_min : 'a heap -> 'a elt_
val delete_min : 'a heap -> 'a heap
val to_string : 'a heap -> string
val gen : ?size:int -> Random.State.t -> t
end
module type PolyHeapSig =
sig
type 'a t
type 'a elt_ = 'a
type 'a heap = 'a t
val empty : 'a heap
val is_empty : 'a heap -> bool
val singleton : 'a elt_ -> 'a heap
val insert : 'a elt_ -> 'a heap -> 'a heap
val merge : 'a heap -> 'a heap -> 'a heap
val find_min : 'a heap -> 'a elt_
val delete_min : 'a heap -> 'a heap
val to_string : ('a -> string) -> 'a heap -> string
end
end