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.

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:

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

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