PriorityQueue

GitHub   Edit on GitHub

A priority queue is a data structure that maintains elements in a priority order. Elements with higher priority are served before elements with lower priority when extracting from the priority queue.

An immutable priority queue implementation is available in the Immutable submodule.

Added in 0.5.3 No other changes yet.
1
from "priorityqueue" include Priorityqueue

Types

Type declarations included in the PriorityQueue module.

PriorityQueue.PriorityQueue

1
type PriorityQueue<a>

Mutable data structure which maintains a priority order for its elements.


Values

Functions and constants included in the PriorityQueue module.

PriorityQueue.make

Added in 0.5.3
versionchanges
0.6.0Merged with `makeSized`; modified signature to accept size
1
make : (?compare: ((a, a) => Number), ?size: Number) => PriorityQueue<a>

Creates a new priority queue with a given internal storage size and a comparator function, which is used to determine priority of elements. The comparator function takes two elements and must return 0 if both share priority, a positive number if the first has greater priority, and a negative number if the first has less priority.

Generally, you won’t need to care about the storage size of your priority queue and can use the default size.

Parameters:

param type description
?compare (a, a) => Number The comparator function used to indicate priority order
?size Number The initial storage size of the priority queue

Returns:

type description
PriorityQueue<a> An empty priority queue

Examples:

1
PriorityQueue.make() // creates a min priority queue of numbers using the compare pervasive
1
PriorityQueue.make(compare=compare, size=32) // creates a min priority queue of numbers using the compare pervasive and an initial size of 32
1
PriorityQueue.make((a, b) => String.length(b) - String.length(a)) // creates a priority queue by string length (longest to shortest)

PriorityQueue.size

Added in 0.5.3 No other changes yet.
1
size : (pq: PriorityQueue<a>) => Number

Gets the number of elements in a priority queue.

Parameters:

param type description
pq PriorityQueue<a> The priority queue to inspect

Returns:

type description
Number The number of elements in the priority queue

PriorityQueue.isEmpty

Added in 0.5.3 No other changes yet.
1
isEmpty : (pq: PriorityQueue<a>) => Bool

Determines if the priority queue contains no elements.

Parameters:

param type description
pq PriorityQueue<a> The priority queue to check

Returns:

type description
Bool true if the priority queue is empty and false otherwise

PriorityQueue.push

Added in 0.5.3 No other changes yet.
1
push : (val: a, pq: PriorityQueue<a>) => Void

Adds a new element to the priority queue.

Parameters:

param type description
val a The value to add into the priority queue
pq PriorityQueue<a> The priority queue to update

PriorityQueue.peek

Added in 0.5.3 No other changes yet.
1
peek : (pq: PriorityQueue<a>) => Option<a>

Retrieves the highest priority element in the priority queue. It is not removed from the queue.

Parameters:

param type description
pq PriorityQueue<a> The priority queue to inspect

Returns:

type description
Option<a> Some(value) containing the highest priority element or None if the priority queue is empty

PriorityQueue.pop

Added in 0.5.3 No other changes yet.
1
pop : (pq: PriorityQueue<a>) => Option<a>

Removes and retrieves the highest priority element in the priority queue.

Parameters:

param type description
pq PriorityQueue<a> The priority queue to inspect

Returns:

type description
Option<a> Some(value) containing the highest priority element or None if the priority queue is empty

PriorityQueue.drain

Added in 0.5.3 No other changes yet.
1
drain : (pq: PriorityQueue<a>) => List<a>

Clears the priority queue and produces a list of all of the elements in the priority queue in priority order.

Parameters:

param type description
pq PriorityQueue<a> The priority queue to drain

Returns:

type description
List<a> A list of all elements in the priority in priority order

PriorityQueue.fromArray

Added in 0.5.4
versionchanges
0.6.0Made `compare` a default argument
1
2
fromArray :
(array: Array<a>, ?compare: ((a, a) => Number)) => PriorityQueue<a>

Constructs a new priority queue initialized with the elements in the array using a custom comparator function, which is used to determine priority of elements. The comparator function takes two elements and must return 0 if both share priority, a positive number if the first has greater priority, and a negative number if the first has less priority.

Parameters:

param type description
array Array<a> An array of values used to initialize the priority queue
?compare (a, a) => Number A comparator function used to assign priority to elements

Returns:

type description
PriorityQueue<a> A priority queue containing the elements from the array

PriorityQueue.fromList

Added in 0.5.3
versionchanges
0.6.0Made `compare` a default argument
1
fromList : (list: List<a>, ?compare: ((a, a) => Number)) => PriorityQueue<a>

Constructs a new priority queue initialized with the elements in the list using a custom comparator function, which is used to determine priority of elements. The comparator function takes two elements and must return 0 if both share priority, a positive number if the first has greater priority, and a negative number if the first has less priority.

Parameters:

param type description
list List<a> A list of values used to initialize the priority queue
?compare (a, a) => Number A comparator function used to assign priority to elements

Returns:

type description
PriorityQueue<a> A priority queue containing the elements from the list

PriorityQueue.Immutable

An immutable priority queue implementation.

Added in 0.6.0
versionchanges
0.5.4Originally in `"immutablepriorityqueue"` module

Types

Type declarations included in the PriorityQueue.Immutable module.

PriorityQueue.Immutable.PriorityQueue

1
type PriorityQueue<a>

Immutable data structure which maintains a priority order for its elements.

Values

Functions and constants included in the PriorityQueue.Immutable module.

PriorityQueue.Immutable.empty

Added in 0.6.0
versionchanges
0.5.4Originally in `"immutablepriorityqueue"` module
1
empty : PriorityQueue<a>

An empty priority queue with the default compare comparator.

PriorityQueue.Immutable.make

Added in 0.6.0
versionchanges
0.5.3Originally in `"immutablepriorityqueue"` module with `compare` being a required argument
1
make : (?compare: ((a, a) => Number)) => PriorityQueue<a>

Creates a new priority queue with a comparator function, which is used to determine priority of elements. The comparator function takes two elements and must return 0 if both share priority, a positive number if the first has greater priority, and a negative number if the first has less priority.

Parameters:

param type description
?compare (a, a) => Number The comparator function used to indicate priority order

Returns:

type description
PriorityQueue<a> An empty priority queue

Examples:

1
PriorityQueue.Immutable.make(compare) // creates a min priority queue of numbers using the compare pervasive
1
PriorityQueue.Immutable.make((a, b) => String.length(b) - String.length(a)) // creates a priority queue by string length (longest to shortest)

PriorityQueue.Immutable.size

Added in 0.6.0
versionchanges
0.5.3Originally in `"immutablepriorityqueue"` module
1
size : (pq: PriorityQueue<a>) => Number

Gets the number of elements in a priority queue.

Parameters:

param type description
pq PriorityQueue<a> The priority queue to inspect

Returns:

type description
Number The number of elements in the priority queue

PriorityQueue.Immutable.isEmpty

Added in 0.6.0
versionchanges
0.5.3Originally in `"immutablepriorityqueue"` module
1
isEmpty : (pq: PriorityQueue<a>) => Bool

Determines if the priority queue contains no elements.

Parameters:

param type description
pq PriorityQueue<a> The priority queue to check

Returns:

type description
Bool true if the priority queue is empty and false otherwise

PriorityQueue.Immutable.push

Added in 0.6.0
versionchanges
0.5.3Originally in `"immutablepriorityqueue"` module
1
push : (val: a, pq: PriorityQueue<a>) => PriorityQueue<a>

Produces a new priority queue by inserting the given element into the given priority queue.

Parameters:

param type description
val a The value to add into the priority queue
pq PriorityQueue<a> The priority queue

Returns:

type description
PriorityQueue<a> A new priority queue with the given element inserted

PriorityQueue.Immutable.peek

Added in 0.6.0
versionchanges
0.5.3Originally in `"immutablepriorityqueue"` module
1
peek : (pq: PriorityQueue<a>) => Option<a>

Retrieves the highest priority element in the priority queue. It is not removed from the queue.

Parameters:

param type description
pq PriorityQueue<a> The priority queue to inspect

Returns:

type description
Option<a> Some(value) containing the highest priority element or None if the priority queue is empty

PriorityQueue.Immutable.pop

Added in 0.6.0
versionchanges
0.5.3Originally in `"immutablepriorityqueue"` module
1
pop : (pq: PriorityQueue<a>) => PriorityQueue<a>

Produces a new priority queue without the highest priority element in the given priority queue. If the input priority queue is empty, this function will return it.

Parameters:

param type description
pq PriorityQueue<a> The priority queue

Returns:

type description
PriorityQueue<a> A new priority queue without the highest priority element

PriorityQueue.Immutable.drain

Added in 0.6.0
versionchanges
0.5.3Originally in `"immutablepriorityqueue"` module
1
drain : (pq: PriorityQueue<a>) => List<a>

Produces a list of all elements in the priority queue in priority order.

Parameters:

param type description
pq PriorityQueue<a> The priority queue to drain

Returns:

type description
List<a> A list of all elements in the priority in priority order

PriorityQueue.Immutable.fromList

Added in 0.6.0
versionchanges
0.5.3Originally in `"immutablepriorityqueue"` module with `compare` being a required argument
1
fromList : (list: List<a>, ?compare: ((a, a) => Number)) => PriorityQueue<a>

Constructs a new priority queue initialized with the elements in the list using a custom comparator function, which is used to determine priority of elements. The comparator function takes two elements and must return 0 if both share priority, a positive number if the first has greater priority, and a negative number if the first has less priority.

Parameters:

param type description
list List<a> A list of values used to initialize the priority queue
?compare (a, a) => Number A comparator function used to assign priority to elements

Returns:

type description
PriorityQueue<a> A priority queue containing the elements from the list

PriorityQueue.Immutable.fromArray

Added in 0.6.0
versionchanges
0.5.4Originally in `"immutablepriorityqueue"` module with `compare` being a required argument
1
2
fromArray :
(array: Array<a>, ?compare: ((a, a) => Number)) => PriorityQueue<a>

Constructs a new priority queue initialized with the elements in the array using a custom comparator function, which is used to determine priority of elements. The comparator function takes two elements and must return 0 if both share priority, a positive number if the first has greater priority, and a negative number if the first has less priority.

Parameters:

param type description
array Array<a> An array of values used to initialize the priority queue
?compare (a, a) => Number A comparator function used to assign priority to elements

Returns:

type description
PriorityQueue<a> A priority queue containing the elements from the array
This is a notification!