Array Operations

This package provides an implementation of extendible arrays with logarithmic access time.

Beware: the atom $ is used to indicate an unset element, and the functor $ /4 is used to indicate a subtree. In general, array elements whose principal function symbol is $ will not work.

To load the package, enter the query

     | ?- use_module(library(arrays)).
     
new_array(-Array)

Binds Array to a new empty array. Example:

          | ?- new_array(A).
          
          A = array($($,$,$,$),2)
          

is_array(+Array)

Is true when Array actually is an array.

aref(+Index, +Array, ?Element)

Element is the element at position Index in Array. It fails if Array[Index] is undefined.

arefa(+Index, +Array, ?Element)

Is like aref/3 except that Element is a new array if Array[Index] is undefined. Example:

          | ?- arefa(3, array($($,$,$,$),2), E).
          
          E = array($($,$,$,$),2)
          

arefl(+Index, +Array, ?Element)

Is as aref/3 except that Element is [] for undefined cells. Example:

          | ?- arefl(3, array($($,$,$,$),2), E).
          
          E = []
          

array_to_list(+Array, -List)

List is a list with the pairs Index-Element of all the elements of Array. Example:

          | ?- array_to_list(array($(a,b,c,d),2), List).
          
          List = [0-a,1-b,2-c,3-d]
          

aset(+Index, +Array, +Element, -NewArray)

NewArray is the result of setting Array[Index] to Element. Example:

          | ?- aset(3,array($($,$,$,$),2), a, Newarr).
          
          Newarr = array($($,$,$,a),2)