This site is a static rendering of the Trac instance that was used by R7RS-WG1 for its work on R7RS-small (PDF), which was ratified in 2013. For more information, see Home.

Source for wiki BinaryHeapsCowan version 1

author

cowan

comment


    

ipnr

98.14.172.204

name

BinaryHeapsCowan

readonly

0

text

== Binary heaps ==

Binary heaps are mutable collections that can contain any Scheme object provided there exists a total ordering on the objects.  They are intended to be a thin veneer over arrays.  Binary heaps are disjoint from other types of Scheme objects.

== Procedures ==

`(make-heap `''<''`)`

Constructs and returns a new empty heap.  ''Proc'' is the less-than procedure for the heap.

`(heap `''<''` `''element''` ...)`

Constructs and returns a new heap using ''<'' as the less-than procedure, and containing the ''elements''.

`(copy-heap`''heap''`)`

Constructs and returns a new heap containing the elements of ''heap''.

`(heap? `''obj''`)`

Returns `#t` if ''obj'' is a heap, and `#f` otherwise.

`(heap-length? `''set''`)`

Returns the number of elements in ''heap''.

`(heap-member? `''heap''` `''element''`)`

Returns `#t` if ''element'' is a member of ''heap'' and `#f` otherwise.

`(heap-add! `''heap''` `''element''`)`

Adds ''element'' to ''heap''.  Returns unspecified values.

`(heap-remove! `''heap''` `''element''`)`

Removes ''element'' from ''heap'' unless it is not a member.  Returns unspecified values.

`(heap-map `''proc''` `''set''`)`

Applies ''proc'' to each element of ''heap'' in increasing order and constructs and returns a new set containing the values of the applications.

`(heap-for-each `''proc''` `''set''`)`

Applies ''proc'' to ''heap'' in increasing order, discarding the returned values.  Returns unspecified results.

`(heap-fold `''proc''` `''nil''` `''heap''`)`

Invokes ''proc'' on each member of ''set'' in increasing order, passing the result of the previous invocation as a second argument.  For the first invocation, ''nil'' is used as the second argument.  Returns the result of the last invocation.

`(heap->list `''heap''`)`

Constructs and returns a new list containing the members of ''set'' in increasing order.

`(list->heap `''<''` `''list''`)`

Constructs and returns a new set containing the elements of ''list''.  The elements need not be in increasing order.

`(heap->vector `''heap''`)`

Constructs and returns a new vector containing the elements of ''set'' in increasing order.

`(vector->heap `''<''` `''vector''`)`

Constructs and returns a new heap containing the elements of ''vector''.  The elements need not be in increasing order.

time

2010-10-18 13:16:07

version

1