[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Issue: DISASSEMBLE-SIDE-EFFECT (version 1)
- To: cl-cleanup@SAIL.STANFORD.EDU
- Subject: Re: Issue: DISASSEMBLE-SIDE-EFFECT (version 1)
- From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
- Date: Thu, 17 Dec 87 20:45 EST
- In-reply-to: <871208-160538-5539@Xerox>
Date: 8 Dec 87 15:22 PST
I think we should take a step back and ask what the place of DISASSEMBLE, ED,
TRACE, BREAK, DRIBBLE, INSPECT etc.. should be in the ANSI standard. These are
things for which constructing a denotational semantics is not feasible, cann't
be easily tested with a validation suites, etc.
I think a more global change of status for these is called for; I'd propose that
the ANSI Standard should say something like:
"The following are suggested features for a ANSI Common Lisp programming
environment. Conforming implementations are required to document what, if
anything, these functions do, in detail. However, no portable ANSI Common Lisp
program can rely on the behavior of these functions, because the behavior is
specifically not specified in the standard."
This seems like a reasonable idea, although it's perhaps not in the domain of
the Cleanup committee.
Once we move away from conformance and standard into recommendation, we might
actually be more able to make better progress recommending, for example, that
systems call their GC function (GC) and their exit function (EXIT) etc.
I think this would be a mistake. The functions listed earlier are to be called
by users and generally are not useful to call from programs. The only reason those
functions were ever in CLtL as functions is that Common Lisp didn't want to assume
that some kind of command processor, separate from Lisp evaluation, exists since
opinions on how this should work diverge so wildly.
GC and EXIT are in a different category. GC is likely to be called by programs,
except that as we found when we discussed it a while back, it doesn't seem to be
possible to say anything at all implementation-independent about the semantics
of this, which makes it not very useful for portable programs. EXIT surely must
be for programs, rather than users, since every operating system already has a
way for users to get out; but again there is no portable semantics.
While it's useful to have some "suggested features" for users, to ease learning
how to use a new Common Lisp implementation as well as to give implementors an
idea of the minimum environment expected, it's not useful to have "suggested
features" for programs, since if they are only suggested, no portable program
can use them.