NAME
    assoc - create a new association array

SYNOPSIS
    assoc()

TYPES
    return	association

DESCRIPTION
    This functions returns an empty association array.

    Associations are special values that act like matrices, except
    that they are more general (and slower) than normal matrices.
    Unlike matrices, associations can be indexed by arbitrary values.
    For example, if 'val' was an association, you could do the following:

	    val['hello'] = 11;
	    val[4.5] = val['hello'];
	    print val[9/2];

    and 11 would be printed.

    Associations are created by the 'assoc' function.  It takes no
    arguments, and simply returns an empty association.  You can then
    insert elements into the association by indexing the returned value
    as shown above.

    Associations are multi-dimensional.  You can index them using one to
    four dimensions as desired, and the elements with different numbers
    of dimensions will remain separated.  For example, 'val[3]' and
    'val[3,0]' can both be used in the same association and will be
    distinct elements.

    When references are made to undefined elements of an association,
    a null value is simply returned.  Therefore no bounds errors can
    occur when indexing an association.  Assignments of a null value
    to an element of an association does not delete the element, but
    a later reference to that element will return the null value as if
    the element was undefined.  Elements with null values are implicitly
    created on certain other operations which require an address to be
    taken, such as the += operator and using & in a function call.

    The elements of an association are stored in a hash table for
    quick access.  The index values are hashed to select the correct
    hash chain for a small sequential search for the element.  The hash
    table will be resized as necessary as the number of entries in
    the association becomes larger.

    The size function returns the number of elements in an association.
    This size will include elements with null values.

    Double bracket indexing can be used for associations to walk through
    the elements of the association.  The order that the elements are
    returned in as the index increases is essentially random.  Any
    change made to the association can reorder the elements, this making
    a sequential scan through the elements difficult.

    The search and rsearch functions can search for an element in an
    association which has the specified value.  They return the index
    of the found element, or a NULL value if the value was not found.

    Associations can be copied by an assignment, and can be compared
    for equality.  But no other operations on associations have meaning,
    and are illegal.

EXAMPLE
    > print assoc()

      assoc (0 elements):

LIMITS
    none

LIBRARY
    none

SEE ALSO
    isassoc, rsearch, search, size
