---
name: "Stdlib.Pqueue"
section: "3o"
platform: "linux"
package: "ocaml"
version: "5.5.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Stdlib.Pqueue"
---

# Stdlib.Pqueue(3o)

no description

## NAME

Stdlib.Pqueue - 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) option

```

*module 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.
