HELP NEWASSOC                                      Steven Hardy Jan 1978

    newassoc(LIST) -> PROP

This procedure can be used to create associative 'memories'. For
example:

    vars age = newassoc([[bert 26] [fred 15]]);

The value of -age- is now a procedure which finds the value "associated"
with its single argument, for example:

    age("bert") =>
    ** 26
    age("fred") =>
    ** 15
    age("john") =>
    ** false

We can alter the value associated with a given word, thus:

    27 -> age("bert");
    age("bert") =>
    ** 27
    age("bert") + 1 -> age("bert");

    define birthday(person);
        age(person) + 1 -> age(person);
    enddefine;
    age("bert") =>
    ** 28
    birthday("bert");
    age("bert") =>
    ** 29

We can also create new entries:

    35 -> age("john");

so that now,

    age("john") =>
    ** 35

-newassoc- makes use of the procedure -newproperty- which creates hashed
association tables. See HELP *NEWPROPERTY and *PROPERTIES. The property
returned by -newassoc- uses "==" to find the value associated with its
argument, see HELP *NEWPROPERTY for more details.

There is a related procedure -assoc- which creates association lists
rather than properties. It uses "=" rather than the stricter "==" when
comparing arguments, but is a lot more inefficient for large sets of
associations. It will nearly always be more efficient to use a property
table. See REF *ASSOC for details.

See REF *PROPS for full information on properties.


--- C.all/help/newassoc
--- Copyright University of Sussex 1992. All rights reserved. ----------
