Search                        Top                                  Index
HELP PDPROPS                                      A.Sloman, April 1985

    pdprops(<procedure>) -> <item>
    item -> pdprops(<procedure>

All procedures in POP11 have an associated property (see HELP
*PROPERTIES) which is accessible through the procedure PDPROPS (PDPROPS
is short for "procedure properties"). When a procedure is created using
'define', its name (a POP-11 word) is stored in the PDPROPS of the
procedure (and similarly if an updater is defined using 'define
updaterof'). The property is in turn stored in a field of the procedure
record.

The system makes use of the PDPROPS of a procedure when printing. Try
assigning to the PDPROPS of a procedure and then printing the procedure,
for example:

    define silly(num); num + num enddefine;

    silly =>
    ** <procedure silly>

    "verysilly" -> pdprops(silly);

    silly =>
    ** <procedure verysilly>

When the PDPROPS contains a list, the standard printing procedure
assumes the first element is the name, e.g.

    [1 10 1 10] -> pdprops(silly);

    silly =>
    ** <procedure 1>

Similarly, if the first element is a list, then its first element will
be examined, and so on, until a non-list is found. This enables a lot of
information about a procedure to be stored in the PDPROPS, without
cluttering up printing:

    [[[silly procedure] [type stupid]] one argument] -> pdprops(silly);

    silly =>
    ** <procedure silly>

When a mishap occurs, the system normally prints out the PDPROPS of all
the procedures that are currently being executed. (The only exceptions
are those procedures whose PDPROPS are FALSE, and words beginning with
"sys" or "ved", though even those will be printed out if you assign TRUE
to POPSYSCALL.)

An array is a special kind of procedure (see *NEWARRAY). Like other
procedures, it therefore has a PDPROPS (and an *UPDATER). The same
applies to *CLOSURES.

See REF *PROCEDURE for more detailed information on procedures in
POP-11.

See also HELP
    *UPDATER - allows a procedure to change the contents of data
                structures
    *DEFINE  - on the form and content of procedure definitions

--- C.all/help/pdprops -------------------------------------------------
--- Copyright University of Sussex 1987. All rights reserved. ----------