[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Issue: PRINT-PRETTY-HOOK (version 1)
- To: masinter.pa%Xerox.COM@multimax
- Subject: Re: Issue: PRINT-PRETTY-HOOK (version 1)
- From: Dan L. Pierson <pierson%mist@multimax.ARPA>
- Date: Thu, 22 Sep 88 10:42:09 EDT
- Cc: cl-cleanup%sail.stanford.edu@multimax
- In-reply-to: Your message of 21 Sep 88 23:27:00 -0700.
I thought at one time that extensions to prettyprint were going to be
handled as specializations to a standard generic function in the same
way that print-object is specializable. I'd like at least to make sure
that this is present.
I very much want this to be present, but it's inadequate for two reasons:
1 CLOS may not be a required part of Common Lisp, therefore portable code
may not be able to assume it.
2 Writing a separate pretty printer for each structure using standard
Common Lisp functions is likely to be much more verbose than doing
the same job using one of Dick Water's pretty printers. Of course
some people will find the extension syntax of Dick's pretty
printers distasteful, but I'm proposing to standardize on them.
There's too much that the prettyprinter needs to do "right" that a
portable prettyprinter can't do, that I wonder if this really solves
the problem. That is "while it is easy for a user to write a pretty
printer" is it really easy for a user to write a correct pretty
printer? One that can deal with *print-circle*, for example?
There may be things that a user written pretty printer can't do right
(though I can't think of any) but *PRINT-CIRCLE* support certainly
isn't one of them as long as the pretty printer starts at the top
(i.e. changing from one printer to another at say, level 3, will break
circular printing for any two independent print functions). I put
full *PRINT-CIRCLE* support into the VAX Lisp version of GPRINT; doing
it as efficiently as possible was a bit of work, but it didn't require
any non user visible support (printing things like structures did
require implementation dependent functions, but that's being addressed
by a separate proposal). Remember that the pretty printer can always
punt to PRINx-TO-STRING for atoms it doesn't understand.