mirror of
https://github.com/PDP-10/its.git
synced 2026-01-13 15:27:28 +00:00
67 lines
3.1 KiB
Plaintext
Executable File
67 lines
3.1 KiB
Plaintext
Executable File
-*-Text-*-
|
|
|
|
DPRINT is Alan's private hack for making defstructs print out nicely in
|
|
MacLisp. Unlike defstruct itself, DPRINT can be used in ways that are
|
|
incompatible with several other pieces of "semi-standard" MacLisp software,
|
|
notably the NIL-in-MacLisp STRING package and the NIL-in-MacLisp CLASS
|
|
system.
|
|
|
|
DPRINT also defines a simple MacLisp INSPECT function, and a DESCRIBE
|
|
function. These can be safely used with anything else you might care to
|
|
load. No documentation is provided for either of these functions. To see
|
|
how DESCRIBE works, just apply it to a few things. To see how INSPECT
|
|
works, apply it to something and then type "?" to the prompt. One
|
|
non-obvious feature is that both functions, when applied to no arguments
|
|
will use the value of * as their argument.
|
|
|
|
Because you might only want the DESCRIBE and INSPECT functions, just
|
|
loading DPRINT will not turn on any incompatibilities with any other
|
|
(known) MacLisp software package. However if you want to be able to
|
|
control the printing of hunks you can take the plunge and turn DPRINT on.
|
|
To do this use the DPRINT function which takes one argument. If that
|
|
argument is NIL then printing of hunks is reverted to the system default.
|
|
If that argument is non-NIL then smart hunk printing is turned on.
|
|
|
|
Smart hunk printing does three things for you.
|
|
|
|
1. Basic hunks print between square brackets rather than as funny-looking
|
|
conses. They also print with the CXR 0 element first. So where you used
|
|
to see "(BAR . BAZ . FOO .)" you now see "[FOO BAR BAZ]". This syntax will
|
|
NOT read back in again. If you really want to READ hunks, stop reading
|
|
now.
|
|
|
|
2. "Named" hunks produced by defstruct will not print as above but will
|
|
print like "#SPACESHIP-72654", where "SPACESHIP" is the name of the
|
|
defstruct and 72654 is a unique octal number (actually the address of the
|
|
structure in memory).
|
|
|
|
3. Named hunks produced by defstructs that used the :PRINT defstruct
|
|
option to specify a printed representation will print as specified. See
|
|
the defstruct documentation for more on that. (<LIBLSP>STRUCT.NEWS
|
|
contains the relevant update.)
|
|
|
|
Two things to be aware of.
|
|
|
|
1. In order to gain control of the printing of hunks, I have to grab
|
|
control of a resource that the NIL-in-MacLisp packages also attempt to
|
|
control. If I detect that they have already grabbed that resource, then
|
|
the DPRINT function will error. You may FORCE control of that resource by
|
|
saying (DPRINT 'SCREW). This will no doubt do unpredictable things to the
|
|
NIL-in-MacLisp crocks. Use it when you don't care about that.
|
|
|
|
2. in order to control printing I have to be prepared to handle at lot of
|
|
other nonsense about hunks. Specifically I have been fored to make the
|
|
following decisions:
|
|
|
|
Hunks will always self-evaluate. They have to do something because loading
|
|
a LEDIT on 20X requires that a single hunk be evaluated. (God knows why.)
|
|
|
|
EQUAL will always compare two hunks using EQ.
|
|
|
|
If some other operation is attempted on hunks that I don't find useful, you
|
|
will get the error message:
|
|
|
|
;(<hunk> <message> . <args>) -- Unknown message to hunk.
|
|
|
|
You can send me a complaint explaining just what it is that you think hunks
|
|
should do in this situation and we can negotiate it. |