[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Can, could, may, might, must, ...

The manual seems to take no stand on what should -not- be in the LISP package.
It says that the things in the book should be, but it does not say, for example,
whether it's appropriate to have the LISP package use the SYSTEM package. Could
we get people to agree that this should be discouraged, explicitly in the next
edition of the manual and socially until then?

The main reason is that this makes porting between dialects a pain. Suppose
that some implementation has a symbol SYSTEM:FOO which is a system constant. 
CLtL does not prohibit that symbol being placed on the LISP package. But if
I build and application which builds a package on LISP, I have no assurance
that doing (DEFVAR FOO 3) will not be trying to redefine a system constant.
It forces you to shadow a different set of symbols on in virtually every 
implementation that you want to port to, which seems counter to our goals
in creating CL in the first place.

I suggest that it be made explicitly appropriate that the USER package could
inherit from the SYSTEM package, so that functions like SYSTEM:LOGIN,
SYSTEM:HELP, SYSTEM:SUSPEND, and so on could be made available to users in
the default start-up environment without infecting portable code modules that
want to start out in a sterile environment.