[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Issue: KEYWORD-ARGUMENT-NAME-PACKAGE (Revision 1)
- To: Fahlman@C.CS.CMU.EDU
- Subject: Issue: KEYWORD-ARGUMENT-NAME-PACKAGE (Revision 1)
- From: Kent M Pitman <KMP@STONY-BROOK.SCRC.Symbolics.COM>
- Date: Fri, 1 May 87 23:30 EDT
- Cc: KMP@STONY-BROOK.SCRC.Symbolics.COM, Moon@STONY-BROOK.SCRC.Symbolics.COM, CL-Cleanup@SAIL.STANFORD.EDU
- In-reply-to: <FAHLMAN.12299038089.BABYL@C.CS.CMU.EDU>
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.