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

Re: Issue: DEFPACKAGE (version 5)

 I hope it isn't too late to pik a couple of nits on this proposal...

 Most of the clause names are verbals (:USE, :EXPORT, :IMPORT-FROM, ...)
But the lately added :INTERNAL is more adjectival, and unlike 
:EXPORT and :USE and :SHADOW which mimic the function of the same name,
it appears to have a gratuitously different name from INTERN.

I suggest that the :INTERNAL option be renamed :INTERN.

Another nit:
Re: interaction with PACKAGE-CLUTTER, default :use list

 Please verify for me that if there is no :USE clause, whether
the created package will use:
  1. (:lisp)
  2. *default-use-list* (or whatever it is in jonl's PACKAGE-CLUTTER proposal)
  3. NIL
The correct answer is 1, i believe.  If i do (:use NIL) then I get 3,
how would I get 2? 
[use #+ for implementation specific packages, this is for PORTABLE code!]

The rest of the question is whether using the :LISP package is done
in the MAKE-PACKAGE, or lastly, in the (USE-PACKAGE).  Like all USE'ing
this should be deferred until after the shadowing is done, no?

Next nit, order of events:
  I think it is implicit, but not stated that DEFPACKAGE arranges
to sort the execution of all the various clauses to conform to 
(put in seven...) [although proposal says Export happens last..?]
Clarify that the order of the clauses in the source code has no effect.

Final nit:
Also, it says re: side-effects "ie, no IN-PACKAGE is done", 
clarify that this does not proscribe an implementation like:
 `(let ((*package *package*))
   (in-package ,new-name :use nil)

  If anyone has code to implement DEFPACKAGE, i'd appreciate a copy.