[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Printing Objects
- To: common-lisp-object-system@SAIL.STANFORD.EDU
- Subject: Re: Printing Objects
- From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
- Date: Thu, 7 May 87 01:33 EDT
- In-reply-to: <870506-220014-1229@Xerox>
Date: 6 May 87 22:01 PDT
Of the alternatives:
a) All objects print out as #S, if you want different behavior, you
b) By default, objects can't print themselves, and you have to provide a
print function or else mixin a standard class
This is misleading. 87-002 requires that the implementation provide a default
method. The issue in question is not whether objects can print themselves,
but what happens you feed the output of that to read. Thus alternative b
should be stated as "By default, objects print something that signals an error
when read." If I wanted to be parallel to that, but biased, I would state
alternative a as "By default, objects print something that creates a bogus
object when read."
Consider three cases:
1) object wants to print out as #S...
2) object cannot be printed really -- it doesn't make sense to "read" it
3) object wants to be printed in a special way
Case 1: a is preferable, since what you want to do is already the
Case 2: b is only marginally better. In alternative a, you have to
supply an error-if-you-print-me method or else you will get printing
when you shouldn't really --if your erroneously print something and
try to read it back in, alternative b gives you an error at print time,
while alternative a gives you an error later on in your program.
Not so, since Common Lisp is missing the :readably argument to WRITE.
Alternative b gives you an error at read time, not print time.
Case 3: it makes no difference, since you're supplying a print method.
I think Case 1 is the most common in most of the program's I've seen
Not in the programs I've seen. Leaving aside endless arguments about who's
seen what programs, and turning to design rationales: I think it is better
to signal an error when there is some question what people might want,
and provide a way for them to say what they want, than to lead them down
a garden path that ends up in a mysterious blowout because the system
guessed their intention wrong. This is a general principle, but I think
it applies to this case.