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

Issue: KEYWORD-ARGUMENT-NAME-PACKAGE (Revision 1)



I have a Version 2 of this issue waiting for Moon to look it over before sending it
out. The following text is excerpted from that proposal. Does it look any better
to you?

Rationale:

  By allowing symbols other than keyword symbols as keywords, we provide
  a more private communication channel between functions.

  Also, applications such as the emerging object-oriented standard which
  must reliably merge keywords coming from different sources (some internal
  and some user-supplied) can work more reliably by exploting this new
  partitioning of keyword names. For example, a public routine MAKE-FOO
  might need to accept arbitrary keywords from the caller and might want
  to pass those keywords along to an internal routine using keywords of
  its own.

  For example,
   (IN-PACKAGE 'SYSTEM)
   (DEFUN MAKE-INSTANCE (TYPE &REST KEYWORD-VALUE-PAIRS &KEY &ALLOW-OTHER-KEYS)
     (APPLY #'MAKE-INSTANCE-INTERNAL TYPE 'EXPLICIT T KEYWORD-VALUE-PAIRS))
  This could be done without fear that the use of EXPLICIT T would override
  some keyword in keyword-value-pairs since the only way that could happen
  is if someone had done (MAKE-INSTANCE 'ZEBRA 'SYSTEM::EXPLICIT NIL), or
  if the user was programming explicitly in the SYSTEM package, either of 
  which is an implicit admission of willingness to violate SYSTEM's modularity.