Next: Prompting, Previous: Format, Up: Input/Output [Contents][Index]
MIT/GNU Scheme provides hooks for specifying that specified objects have special written representations. There are no restrictions on the written representations.
Defines the print method for objects satisfying predicate to be print-method. The predicate argument must be a unary procedure that returns true for the objects to print specially, and print-method must be a binary procedure that accepts one of those objects and a textual output port.
Although print-method can print the object in any way, we strongly recomment using one of the following special printers.
The name argument may be a unary procedure, a string, or a symbol; if it is a procedure it is called with the object to be printed as its argument and should return a string or a symbol. The get-parts argument, if provided, must be a unary procedure that is called with the object to be printed and must return a list of objects. If get-parts is not provided, it defaults to a procedure that returns an empty list.
The output generated by this method is in a standard format:
#[<name> <hash> <part>…]
where <name>
is the string or symbol from name as printed by
display
, <hash>
is a unique nonnegative integer generated
by calling hash-object
on the object, and the <part>
s are
the result of calling get-parts as printed by write
and
separated by spaces.
One significant advantage of print methods generated by
standard-print-method
is that the parts returned by
get-parts are examined when searching for circular structure (as
by write
) or shared structure (as by write-shared
). In
effect the printer sees one of these objects as a compound object
containing those parts.
The name argument may be a unary procedure, a string, or a symbol; if it is a procedure it is called with the object to be printed as its argument and should return a string or a symbol. The printer argument must be a binary procedure, which is called with the object to print and a textual output port as its arguments.
Similar to standard-print-method
, this procedure prints an object
#[<name> <hash><output>]
where <name>
is the string or symbol from name as printed by
display
, <hash>
is a unique nonnegative integer generated
by calling hash-object
on the object, and <output>
is the
text written by printer.
This procedure has the benefit of printing objects using the standard
bracketed form, but because its output is unstructured can not
be examined for sharing or circularity. Generally speaking it’s
preferable to use standard-print-method
instead.
The following are deprecated procedures that have been replaced by the above.
This procedure is deprecated; instead use
(define-print-method (record-constructor record-type) unparser-method)
provided that unparser-method is really a print method.
These procedures arg deprecated. There is no direct replacement for them.
These were primarily used by define-structure
, which now
generates new-style print methods. If you have other uses of these,
it should be possible to translate them to use
define-print-method
with hand-written predicates.
This procedure is deprecated; it is currently an alias for
bracketed-print-method
.
This procedure is deprecated, with no direct replacement. In general just use procedure without wrapping it.
Next: Prompting, Previous: Format, Up: Input/Output [Contents][Index]