Extendable arrays with logarithmic access time

Author(s): Lena Flood.

This module implements extendable arrays with logarithmic access time. It has been adapted from shared code written by David Warren and Fernando Pereira.

Usage and interface

Documentation on exports

PREDICATE

Usage:new_array(Array)

returns an empty new array Array.

  • The following properties should hold at call time:
    (term_typing:var/1)Array is a free variable.

PREDICATE

Usage:is_array(Array)

Array actually is an array.

  • The following properties should hold at call time:
    (term_typing:nonvar/1)Array is currently a term which is not a free variable.

PREDICATE

Usage:aref(Index,Array,Element)

unifies Element to Array[Index], or fails if Array[Index] has not been set.

  • The following properties should hold at call time:
    (term_typing:nonvar/1)Index is currently a term which is not a free variable.
    (term_typing:nonvar/1)Array is currently a term which is not a free variable.

PREDICATE

Usage:arefa(Index,Array,Element)

is as aref/3, except that it unifies Element with a new array if Array[Index] is undefined. This is useful for multidimensional arrays implemented as arrays of arrays.

  • The following properties should hold at call time:
    (term_typing:nonvar/1)Index is currently a term which is not a free variable.
    (term_typing:nonvar/1)Array is currently a term which is not a free variable.

PREDICATE

Usage:arefl(Index,Array,Element)

is as aref/3, except that Element appears as [] for undefined cells. Thus, arefl(_,_,[]) always succeeds no matter what you give in the first or second args.

  • The following properties should hold at call time:
    (term_typing:nonvar/1)Index is currently a term which is not a free variable.
    (term_typing:nonvar/1)Array is currently a term which is not a free variable.

PREDICATE

Usage:aset(Index,Array,Element,NewArray)

unifies NewArray with the result of setting Array[Index] to Element.

  • The following properties should hold at call time:
    (term_typing:nonvar/1)Index is currently a term which is not a free variable.
    (term_typing:nonvar/1)Array is currently a term which is not a free variable.
    (term_typing:var/1)NewArray is a free variable.

PREDICATE

Usage:array_to_list(Array,List)

returns a List of pairs Index-Element of all the elements of Array that have been set.

  • The following properties should hold at call time:
    (term_typing:nonvar/1)Array is currently a term which is not a free variable.
    (term_typing:var/1)List is a free variable.