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

Steele's |:foo| suggestion.



Sorry, I don't find the |S P A C E S:\:\:=| proposal at all tastefull.  The
difference between |S P A C E S:\:\:=| and |S P A C E S\:\:\:=| requires a
microscopic examination of the characters to discover.  

Given that the common case requires no quoting of the package prefix (on
the LispMachine we went for 6 years before anyone discovered that PRINT had
a deficiency in printing package prefixes that required quoting), I find
the visual distinction between SI:|::=| and |SI:::=| much clearer
than that between |SI:\:\:=| and |SI\:\:\:=|.

I'm sure that if I tried hard enough I could find some problem with
Steele's proposal having to do with the way the case of the quoted package
prefix is treated.  Note that his proposal FORCES us to address this issue,
whereas if we keep the package name outside the vbars the issue ONLY arises
with respect to funny characters in package names.

Since people seem to think that it is important to have some rule about
package names with funny characters, I propose that (Common Lisp portable)
packages MUST have names that are composed of letters (case insensitive),
digits, !, $, %, &, *, +, -, <, >, ?, {, }, @, [, ], ^, _, and ~.  (Or some
suitable similar restriction.)

I do not buy any argument that says SI:|::=| is hard to tokenize.  After
the reader has read "SI:" (in fact, immediately after reading ANY unquoted
":") the next thing in the input stream must be the printed representation
of a symbol.  In my mind the "token" ended with the reading of the ":", I
realize that this means that you can't just gobble a symbol token, and then
check for occurances of ":", and thus the table on page 222 of the laser
manual needs a new type of syntax.  Tough.  The extra hours work it takes to
implement it is worth it in my opinion.