The heap
module implements an immutable priority queue.
This module exports a single function make
for creating a priority queue.
heap.make(init_seq = [])
Return a new priority queue initialized with the values from the sequence init_seq
, which can be
any object that implements the first
and rest
generic functions. The elements added to the priority queue should be of the same type and must implement
compare
.
The new priority queue is represented as a closure that can respond to the following messages:
head()
Return the minimum value in the queue. Raise an error if the queue is empty.
tail()
Return a new queue with the minimum value removed. Raise an error if the queue is empty.
Return the minimum value in the priority queue. Raise an error if the queue is empty.
Return a new priority queue with the minimum value removed. Return false
if the queue is empty.
cons(x)
Return a new priority queue with the element x
added.
is_empty()
Return true
if the priority queue is empty,
return false
otherwise.
let q = heap.make([100, 2, 340])
q.head()
// 2
q.tail().head()
// 100
q = q.cons(0)
first(q)
// 0