Stdlib.Pqueue.3o - Man Page
no description
Module
Module Stdlib.Pqueue
Documentation
Module Pqueue
: (module Stdlib__Pqueue)
module type OrderedType = sig end
Input signature of the functors Pqueue.MakeMin and Pqueue.MakeMax .
module type Min = sig end
Output signature of the functor Pqueue.MakeMin .
module MakeMin : (E : OrderedType) -> sig end
Functor building an implementation of the min-priority queue structure given a totally ordered type for elements.
module type Max = sig end
Output signature of the functor Pqueue.MakeMax .
module MakeMax : (E : OrderedType) -> sig end
Functor building an implementation of the max-priority queue structure given a totally ordered type for elements.
Polymorphic priority queues
The following, more complex functors create polymorphic queues of type 'a t , just like other polymorphic containers (lists, arrays...). They require a notion of "polymorphic elements" 'a
elt that can be compared without depending on the values of 'a .
One usage scenario is when the user wants to pass priorities separately from the value stored in the queue. This is done by using pairs priority * 'a as elements.
module Prio : OrderedType = ...
module PrioQueue = Pqueue.MakeMinPoly(struct
type 'a t = Prio.t * 'a
let compare (p1, _) (p2, _) = Prio.compare p1 p2
end)
(* for example, we now have: *)
PrioQueue.add: 'a PrioQueue.t -> Prio.t * 'a -> unit
PrioQueue.min_elt: 'a PrioQueue.t -> (Prio.t * 'a) optionmodule type OrderedPolyType = sig end
Input signature of the functors Pqueue.MakeMinPoly and Pqueue.MakeMaxPoly .
module type MinPoly = sig end
Output signature of the functor Pqueue.MakeMinPoly .
module MakeMinPoly : (E : OrderedPolyType) -> sig end
Functor building an implementation of min-priority queues given a totally ordered type for the elements.
module type MaxPoly = sig end
Output signature of the functor Pqueue.MakeMaxPoly .
module MakeMaxPoly : (E : OrderedPolyType) -> sig end
Functor building an implementation of max-priority queues given a totally ordered type for the elements.