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

more to do with DEFPACKAGE than with REQUIRE-PATHNAME-DEFAULTS



re: I would be happy to see PROVIDE and REQUIRE flushed.  The biggest
    problem is coming up with a new mnemonic sentence.  . . . 

The main reason I like keeping, at least, the "safety net" version of
REQUIRE in the standard is so that one can "call a halt" if a file is
*** about to be loaded *** but the packages which it depends on are not
yet set up.  Some problems with delayed package creation can be so
severe as to be almost intractable.  See the DEFPACKAGE proposal for
deatils.

Good standard practice would be to have a file of package and interface
creations, which PROVIDEs the "setup" module; and then every other file
would have, say, a (REQUIRE "phlogistion-setup") near the beginning.
Admittedly there is much less need for a user to remember the mnemonic
if he sticks just to this discipline; but of course lots of wizards will
not only want to "roll their own", but will demand to know what is going
on.  The Discussion section of the DEFPACKAGE proposal offers a new
mnemonic, based on the ordering constraints derived therein:

  It has been suggested that the "Put IN Seven EXtremely Random USEr
  Interface COmmands" mnemonic described in CLtL p.191 could be removed;
  and with possibly a few exceptions, the special handling of them by
  COMPILE-FILE could be removed.  As this would be an incompatible change, 
  it is not part of this proposal.  However, a new mnemonic can be offered, 
  to help remember the ordering constraints mentioned above:
	    I REmember Six USEr Interface Expressions
  Each word in the sentence corresponds to one operation listed below:
     I				IN-PACKAGE	;"foot" to stand on
     REmember			REQUIRE		;ensure pre-requisite packages
     Six			SHADOW		;block multiple-inheritances
     USEr			USE-PACKAGE	;go for it!
     Interface			IMPORT		;bring in "foreign" symbols
     EXpressions		EXPORT		;a "face" to show to others.


-- JonL --