HELP APPDATA                             Revised: John Williams Apr 1985
                                         Revised: Adrian Howard Mar 1992

    appdata(struct, p)

This procedure takes two arguments, some kind of data structure struct
and a procedure p. It applies the procedure to each component of the
structure. For example, the following

    appdata('CAT', charout);

applies charout to the elements of the string 'CAT' (the characters `C`,
`A`, `T`.) These characters, therefore, will appear as output.

Another example:

    appdata({a 2 'foo'}, dataword) =>
    ** word integer string

If the structure argument to appdata is a property the procedure is
applied to each of the item/value pairs (to each element of its
datalist).

If the structure argument to appdata is a closure, the procedure is
applied to the frozen values.

If the structure argument to appdata is an array, the procedure is
applied to all the elements of the array.

See HELP * DATALIST for more examples of what the components of various
kinds of structures are taken to be.

N.B. If appdata is applied to a list, then the procedure will be applied
to the front of the list and to the back of the list, not to all the
elements of the list. To understand why, you need to understand how
lists are implemented. See TEACH * WAL (What Are Lists). The procedure
applist is provided to apply a procedure to every element of a list (see
REF * APPLIST.)


See Also
--------

HELP * DATALIST
    Returns a list of the components of a structure.

HELP * MAPDATA
    Like appdata, but returns a changed copy of the structure.

HELP * CLASSES
    More on data structures and procedures applicable to them.

HELP * LOOPS
    Other types of iteration.

REF * DATA
    Details on generic data procedures.


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