functor (Ord : ProglangUtils.PrioQueues.ORD->
  functor (Data : DATA->
    sig
      type t
      type key = Ord.t
      type data = Data.t
      exception Empty
      val create : unit -> t
      val clear : t -> unit
      val is_empty : t -> bool
      val top : t -> data
      val pop : t -> data
      val push : key -> data -> t -> unit
      val string_of : t -> string
      val remove : data -> t -> unit
    end