Shawn Wagner <shawnw.mobile@gmail.com>
Imperative max priority queues. Currently implemented with a binary heap, but that is an internal detail that is subject to change in the future.
Two priority queues are equal? if they have equal? comparison functions, contain the same number of elements and when sorted by priority each corresponding pair of elements are equal? . This can be an expensive operation.
procedure
( priority-queue? obj)→boolean?
obj:any/c
procedure
procedure
( make-priority-queue <elem...)→priority-queue?
<:(->any/cany/cany/c)elem:any/c
procedure
( list->priority-queue <elems)→priority-queue?
<:(->any/cany/cany/c)elems:list?
procedure
( vector->priority-queue <elems)→priority-queue?
<:(->any/cany/cany/c)elems:vector?
procedure
procedure
( priority-queue-insert! pqelem)→void?
elem:any/c
procedure
( priority-queue-remove-max! pq)→any/c
procedure
( priority-queue-remove! pqelem[=?])→boolean?
elem:any/c
If the queue has multiple elements that can compare equal to the given one, it is unspecified which one is removed.
procedure
( in-priority-queue! pq)→sequence?
A priority queue can be used directly as a sequence? with the same effect.
procedure
( priority-queue-peek-max pq)→any/c
procedure
procedure
( priority-queue-ordering pq)→(->any/cany/cany/c)
procedure
( priority-queue-map fpq[<])→priority-queue?
f:(->any/cany/c)
procedure
( priority-queue->list pq)→list?
procedure
procedure
( priority-queue->vector! pqvec)→vector?
procedure
procedure
procedure
( priority-queue->sorted-vector! pqvec)→vector?