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