[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
DEFAULT-CASE
- To: franz!sail.stanford.edu!CL-Cleanup
- Subject: DEFAULT-CASE
- From: franz!frisky!jkf@ucbarpa.Berkeley.EDU (John Foderaro)
- Date: Thu, 16 Mar 89 12:21:57 PST
I brought up the issue of case-sensitive programming a few weeks
ago and there was no negative mail. My message was part of the
discussion on the READ-CASE-SENSITIVITY issue but in thinking it over
I believe that it makes more sense to look at what is needed to make
Common Lisp more useful in case-sensitive environments as two
separate things: 1. allow to the reader to be case-sensitive, and
2. make the names be lower-case by default. Item 1 is already being
worked on, here is item 2:
john foderaro
franz inc.
jkf%franz.uucp@berkeley.edu
Issue: DEFAULT-CASE
Forum: Cleanup
References: CLtL p 334 ff: What the Read Function Accepts;
especially p 337.
Issue: READ-CASE-SENSITIVITY
Category: CHANGE
Edit History: 16-Mar-89, Version 1 by jkf
Problem Description:
In most programming/operating-system environments where the case
of names of functions, programs, identifiers, and files *does*
matter, the case of most characters used for such purposes
is lower case. One example of such an environment is the Unix
operating system.
The resolution of the READ-CASE-SENSITIVITY will permit
one to write case-sensitive Lisp code however since the
the case of characters in the print names of all standard
functions and symbols is upper, this will make using
the Lisp in a case-sensitive mode difficult.
Proposal (DEFAULT-CASE:LOWER)
The case of all characters in the names of standard
functions, symbols, and packages is lower.
Rationale:
People running in a case-insensitive mode shouldn't care
which case is the default case.
People running in a case-sensitive mode care very much
which case is default, and for most of these people
lower case is preferred.
Furthermore there are a large number of users
of Lisp in case-sensitive environments and it is important
that the desires of these users be met.
Current Practice:
Franz Inc's Allegro Common Lisp supports a case-sensitive
reader with either a upper-case default for names
or a lower-case default. A number of people use the
case-sensitive feature with a lower-case default. I don't
know anyone that uses the lisp in a case-sensitive mode
with an upper-case default.
Cost to Implementors:
In case-insensitive mode, the cost to make characters downcase
rather than upcase should be small.
The cost of locating and fixing all of the places where
the default case of symbol names actually matters will be moderate
(I suspect that the older the Lisp the more numerous
the instances of dependency on the case of the names).
Cost to Users:
Again, the cost of locating and fixing all of the places where
the default case of symbol names actually matters will be moderate.
As an example, to find and fix all of the places in the PCL
source (~15000 lines) that depend on the default case took
me 15 minutes.
Cost of Non-Adoption:
Using Lisp in case-sensitive environments will continue to be
awkward.
It will continue to be hard for Lisp to interact
with programs written in case-sensitive languages (such as C).
The use of case sensitivity as a tool for writing programs
will continue to be unavailable to Lisp programmers.
Vendors will invent their own methods of adding case-sensitivity,
each in their own different way.
Benefits:
See 'Cost of Non-Adoption'.
Aesthetics:
Most Lisp books (including CLtL) put Lisp code in lower case.
I believe that most people prefer to read text written in lower case.
Discussion:
The best solution would be for there to be a way to make the
reader case-sensitive (i.e. a resolution to the READ-CASE-SENSITIVITY
issue) and for DEFAULT-CASE:LOWER to pass. If for some
reason the READ-CASE-SENSITIVITY should not be resolved in
a manner that results in a case-sensitive reader option, it would
still be good to pass DEFAULT-CASE:LOWER since that would
bring Common Lisp one giant step closer to supporting the
case-sensitive environment.
-------------------------------
- Follow-Ups:
- DEFAULT-CASE
- From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>