DEFSTRUCTThe :PRINT-FUNCTION option should contain a lambda expression
(
This lambda expression names a LAMBDA (object stream depth) (declare (ignore depth)) ...)FUNCTION whose task is to output the
external representation of the STRUCTURE-OBJECT object onto the
STREAM stream. This may be done by outputting text onto the
stream using WRITE-CHAR, WRITE-STRING, WRITE, PRIN1, PRINC,
PRINT, PPRINT, FORMAT and the like.
The following rules must be obeyed:
*PRINT-ESCAPE* must be
respected.*PRINT-PRETTY* is up to you.
*PRINT-CIRCLE* need not be
respected. This is managed by the system. (But the print-circle
mechanism handles only those objects that are direct or indirect
components of the structure.)*PRINT-LEVEL* is respected by
WRITE, PRIN1, PRINC, PRINT, PPRINT, FORMAT instructions
~A, ~S, ~W, and FORMAT instructions
~R, ~D, ~B, ~O, ~X, ~F,
~E, ~G, ~$ with not-numerical arguments.
Therefore the print-level mechanism works automatically if only these
functions are used for outputting objects and if they are not called
on objects with nesting level > 1. (The print-level mechanism does
not recognize how many parentheses you have output. It only counts how
many times it was called recursively.)*PRINT-LENGTH* must be respected,
especially if you are outputting an arbitrary number of components.
*PRINT-READABLY* must be
respected. Remember that the values of *PRINT-ESCAPE*,
*PRINT-LEVEL*, *PRINT-LENGTH* are ignored if
*PRINT-READABLY* is true. The value of *PRINT-READABLY* is
respected by PRINT-UNREADABLE-OBJECT, WRITE, PRIN1, PRINC,
PRINT, PPRINT, FORMAT instructions ~A, ~S,
~W, and FORMAT instructions ~R, ~D,
~B, ~O, ~X, ~F, ~E,
~G, ~$ with not-numerical arguments. Therefore
*PRINT-READABLY* will be respected automatically if only these
functions are used for printing objects.*PRINT-BASE*, *PRINT-RADIX*, *PRINT-CASE*,
*PRINT-GENSYM*, *PRINT-ARRAY*, CUSTOM:*PRINT-CLOSURE*,
CUSTOM:*PRINT-RPARS*, CUSTOM:*PRINT-INDENT-LISTS*.The :INHERIT option is exactly like :INCLUDE except that it
does not create new accessors for the inherited slots (this is a
CLISP extension).
| These notes document CLISP version 2.49.93+ | Last modified: 2018-02-19 |