Numbered Properties
A Numbered Property behaves like an array (conceptually a vector) which is only ever partially accessed and set (one element at a time) via indices.
To implement a Numbered Property, you must specify a PropertyShape function and either or both a PropertyGet and PropertySet function.
When an expression references or makes an assignment to a Numbered Property, APL first calls its PropertyShape function which returns the dimensions of the Property. Note that the shape of the result of this function determines the rank of the Property.
If the expression uses indexing, APL checks that the index or indices are within the bounds of these dimensions, and then calls the PropertyGet or PropertySet function. If the expression specifies a single index, APL calls the PropertyGet or PropertySet function once. If the expression specifies multiple indices, APL calls the function successively.
If the expression references or assigns the entire Property (without indexing) APL generates a set of indices for every element of the Property and calls the PropertyGet or PropertySet function successively for every element in the Property.
Note that APL generates a RANK ERROR if an index contains the wrong number of elements or an INDEX ERROR if an index is out of bounds.
When APL calls a monadic PropertyGet or PropertySet function, it supplies an argument of type PropertyArguments.