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

Re: CLARIFICATION: [italics]package arguments.

> Would you please show us where in CLtL it says that accepting package
> names is forbidden, and required to signal an error?

"Must" means "must."  This means that it "is an error" to do  otherwise.
Whether it signals an error or attempts to interpret what the user meant
is at the  discretion  of the  implementation.  That means, at the least
that the  program  was not a correct CL  program.  However,  the  second
point applies here (see below).

> Or they can provide a "mode" in which extensions are
> disabled as much as possible, to help users assure portability of "pure
> CL" code.  Conformity with the standard only means that an implementing
> will correctly run correct CL programs.

O.K.  I stand corrected.  It is not a violation of the standard  per-say
to  provide  such an  extension.  However,  to do so without a mode like
what  you  describe  or a  flag  that  provides  warning  messages  when
extensions  are used is doing a grave  disservice  to the user.  This is
really  the same  issue as the list of  exported  symbols  from the LISP
package.  Nowhere  in CLtL  does it say  that  extra  symbols  can't  be
exported,  but you make  portable  code  virtually  impossible  to write
unless you require that.  I believe the same is true for any  extension.
It must be  clearly  delineated  either by being in a  separate  package
(possibly  shadowing the symbol in the LISP  package) or it must provide
some kind of feedback  that the operation  just  performed is not Common
Lisp.  That  CLtL  does  not  discuss  issues  like  this  is, I  think,
extremely unfortunate.

	John Diamant