[ Obsolete | Reference Manual | Alphabetic Index ]

make_array(++Array, +Type)

Creates the global array or global variable Array of type Type.
Atom or ground compound term with integer arguments.
Atom, one of float, integer, byte, prolog, global_reference.

This built-in predicate is obsolete!


If Array is an atom, a global variable only visible from the caller module is created. The only type allowed for a global variable is prolog or global_reference. However a typed gobal variable can be create with make_local_array(a(1), Type) (accessed a a(0)).

If Array is a compound term, a local array of type Type is created, its dimension is the arity of the term Array and the size of each dimension is specified by the corresponding argument of the term Array. The sizes must be greater than 0, Type must not be global_reference.

The elements of Prolog arrays are initialised depending on the type: float, integer, byte and global_reference arrays are initialised with 0 values, prolog arrays are initialised with free variables.

The valid elements indexes in the array range from 0 to the dimension minus one. For example myarray created with make_array(myarray(3,4,5), integer) contains 60 integers that may be accessed from myarray(0,0,0) to myarray(2,3,4).

Typed array use less space that untyped (i.e. prolog) ones.

Global references access the original term with is variables, other array types store a copy of the term.

Modes and Determinism


This predicate is sensitive to its module context (tool predicate, see @/2).


(4) instantiation fault
Either or both of the arguments are not ground.
(5) type error
Array is not an atom or a compound term with integer arguments.
(5) type error
Type is not an atom.
(6) out of range
The ground compound term Array has arguments that are integers not greater than 0.
(6) out of range
Type is not an atom in the above set.
(42) redefining an existing array
An array with the same name and dimension as Array already exists.


      make_array(a, prolog).
      make_array(a(1), integer).
      make_array(a(4), prolog).
      make_array(b(2,3), float).
      make_array(a(2), float),
          make_array(a(3,2), byte).

      make_array(a(7), X).                     (Error 4).
      make_array(a(6.0), float).                (Error 5).
      make_array(a(0), float).                  (Error 6).
      make_array(a(2), atom).                  (Error 6).
      make_array(a(4), float),
          make_array(a(5), byte).              (Error 42).

See Also

array / 2, current_array / 2, getval / 2, make_array / 1, make_local_array / 1, make_local_array / 2, setval / 2