[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Features
- To: greek@DEC-HUDSON.ARPA, Guy Steele <gls@THINK.ARPA>, Quux@THINK.ARPA, Steven M. Haflich <smh@MIT-EDDIE.ARPA>, dlw@SCRC-STONY-BROOK.ARPA, common-lisp@SU-AI.ARPA, Masinter.pa@XEROX.ARPA, greek%DEC-HUDSON@SU-AI.ARPA, smh%mit-eddie@SU-AI.ARPA, Fahlman@CMU-CS-C.ARPA
- Subject: Features
- From: David C. Plummer in disguise <DCP@SCRC-QUABBIN.ARPA>
- Date: Tue, 18 Jun 85 11:53 EDT
- In-reply-to: The message of 17 Jun 85 11:13-EDT from greek@DEC-HUDSON.ARPA, <850617115428.2.GLS@UBALDO.ARPA>, <850617120800.3.GLS@UBALDO.ARPA>, <8506171616.AA00429@mit-eddie.ARPA>, The message of 17 Jun 85 13:03-EDT from greek@DEC-HUDSON.ARPA, The message of 17 Jun 85 14:27-EDT from Rem@IMSSS, The message of 17 Jun 85 17:13-EDT from Rem@IMSSS, <850617183248.1.DLW@CHICOPEE.SCRC.Symbolics.COM>, The message of 18 Jun 85 09:35-EDT from greek@DEC-HUDSON.ARPA
Three opinions on this subject:
(1) If we are going to order things by kludginess, I think #, is
kludgier than #., and that #. is kludgier than #+.
(2) I don't think
#+#.pred form
should work, partially because this is combining two evils at the
same time (as opposed to #+pred #.form2 which is two evils at
different times!)
(3) I'm not vehement about this one, but I think features should be in
the keyword package. This allows a relatively simple impmentation
of #+ in that it simply binds *package* to the keyword package,
turns off #. (ours doesn't right now), does a READ and parses the
result. This leads to a slight inconsistency in our implementation:
#+3600 causes 3600 (in base 10, because #+ also binds *read-base* to
10) and this simply causes 3600 to be read in as an integer. Since
our test on *features* is EQ (should be EQL), this still works.
Independent of the above, I think the following needs to be made clear
to implementors (which probably means it has to go into CLtL, even
though that isn't an implementors guide). The conditional read
construct (currently it is #+/#-) must turn of package errors and
probably #. and #, while reading forms for effect. Example:
(defun frob-net ()
#+Symbolics (neti:frob-net)
#+Spice (spice-network:frob-net)
#-(or Symbolics Spice) (error "I see no network here."))
I think it is important for portability to have a read time conditional.
How about this proposal (this is very serious and not intended to be a
flame): Features are in the keyword package. This means they need to
be registered because the keyword package is flat. Registered
trademarks can appear as-is, E.g., #+3600, #+Symbolics, #+LMI, etc.
(Maybe this should extend to major organizations (maybe they're already
registered?)? #+MIT, etc.) Another set of keywords is globally agreed
upon by this group, or by the yellow pages group, e.g., #+Flavors.
Non-registered keywords must be prefaced with the name of the group that
supports the implementation, e.g., #+Symbolics-Rel-6, #+MIT-System-99,
etc.
- References:
- features
- From: Daniel L. Weinreb <DLW@SCRC-QUABBIN.ARPA>