Search                        Top                                  Index
HELP NEWSPARSE                    Jonathan Laventhol, 18 October 1984.

NEWSPARSE(<integer>) -> <sparse_array>

    This is a library procedure for making sparse arrays -- data
structures which are just like ordinary arrays, except that they
save space when most of the points in the array have the same thing.
(See HELP *ARRAYS)

It takes an argument which is an integer specifying how many
dimensions the array should have.

(As explained in HELP * NEWANYSPARSE, instead of an integer, a list
of integers can be given, specifying for each dimension approximately
how many entries there will be).

Examples of use:

    Suppose you want a sparse array of three dimensions:

    ;;; make it
        vars sa;
        newsparse(3) -> sa;

    ;;; this is how it prints
        sa =>
        ** <procedure sparse_array>

    ;;; this is what is in each cell
        sa(1,2,3) =>
        ** undef

    ;;; change one of the cells
        [one two three] -> sa(1,2,3);
        sa(1,2,3) =>
        ** [one two three]

    Sparse arrays are very similar to ordinary arrays except that they
take up much less space.  An ordinary array reserves space for every
possible element.  A sparse array only takes up space for the cells
which aren't the default value. So if you want a huge array to
represent, for example, places in the world at a given time;

        newsparse(4) -> universe;
        [event explosion] -> universe(10, 100, 1000, 1200);

    Sparse arrays can also have ANY pop object as the subscripts.  So we
could make an array of words for different animals.  It might be used
like this:

        wordfor("animal", 4, "domestic", "ungulate", "male") =>
        ** bull

    The procedure newsparse is defined in terms of *NEWANYSPARSE, which
is more general; it provides for different kinds of default and control
of the amount of space it takes up.

See also:
HELP * PROPERTIES, * NEWPROPERTY, * NEWSPARSE, * NEWANYPROPERTY
REF * PROPS


The last example in * NEWANYPROPERTY illustrates a different technique,
employing a single property table.

-----<Copyright University of Sussex 1986.  All rights reserved.>-------