`sig type +'a t val size : 'a BatHeap.t -> int val empty : 'a BatHeap.t val insert : 'a BatHeap.t -> 'a -> 'a BatHeap.t val add : 'a -> 'a BatHeap.t -> 'a BatHeap.t val merge : 'a BatHeap.t -> 'a BatHeap.t -> 'a BatHeap.t val find_min : 'a BatHeap.t -> 'a val del_min : 'a BatHeap.t -> 'a BatHeap.t val of_list : 'a list -> 'a BatHeap.t val to_list : 'a BatHeap.t -> 'a list val elems : 'a BatHeap.t -> 'a list val of_enum : 'a BatEnum.t -> 'a BatHeap.t val enum : 'a BatHeap.t -> 'a BatEnum.t val print : ?first:string -> ?last:string -> ?sep:string -> ('a, 'b) BatIO.printer -> ('a BatHeap.t, 'b) BatIO.printer module type H = sig type elem type t val empty : BatHeap.H.t val size : BatHeap.H.t -> int val insert : BatHeap.H.t -> BatHeap.H.elem -> BatHeap.H.t val add : BatHeap.H.elem -> BatHeap.H.t -> BatHeap.H.t val merge : BatHeap.H.t -> BatHeap.H.t -> BatHeap.H.t val find_min : BatHeap.H.t -> BatHeap.H.elem val del_min : BatHeap.H.t -> BatHeap.H.t val of_list : BatHeap.H.elem list -> BatHeap.H.t val to_list : BatHeap.H.t -> BatHeap.H.elem list val elems : BatHeap.H.t -> BatHeap.H.elem list val of_enum : BatHeap.H.elem BatEnum.t -> BatHeap.H.t val enum : BatHeap.H.t -> BatHeap.H.elem BatEnum.t val print : ?first:string -> ?last:string -> ?sep:string -> (BatHeap.H.elem, 'a) BatIO.printer -> (BatHeap.H.t, 'a) BatIO.printer end module Make : functor (Ord : BatInterfaces.OrderedType) -> sig type elem = Ord.t type t val empty : t val size : t -> int val insert : t -> elem -> t val add : elem -> t -> t val merge : t -> t -> t val find_min : t -> elem val del_min : t -> t val of_list : elem list -> t val to_list : t -> elem list val elems : t -> elem list val of_enum : elem BatEnum.t -> t val enum : t -> elem BatEnum.t val print : ?first:string -> ?last:string -> ?sep:string -> (elem, 'a) BatIO.printer -> (t, 'a) BatIO.printer end end`