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)