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
- Library usage:
:- use_module(library(arrays)). - Exports:
- Predicates:
new_array/1, is_array/1, aref/3, arefa/3, arefl/3, aset/4, array_to_list/2.
- Predicates:
- Imports:
- Packages:
prelude, nonpure, assertions, isomodes.
- Packages:
Documentation on exports
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.
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.
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.
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.
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.
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.
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.