This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Case-sensitivity.


Bruce Stephens <b.stephens@isode.com> writes:

> Mikael Djurfeldt <mdj@nada.kth.se> writes:
> 
> > So, ideally, I think RnRS should change [to be case-sensitive], not
> > Guile.
> 
> Yes, I'd have thought so.

There are various reasons it does not.  One being the pedagogical
nature of scheme, another being the robustness of whole write/read
cycle, and the last historical.  For the first reason, scheme as a
teaching language, there is a feeling that this complicates the
language beyond what is really important for a student to pick up from
it.  The second, the read/write cycle, is that case insensitivity
preserves the intergrity of the data, makes it less error prone.  If
for some reason it has to be typed into an all caps terminal, or
transmitted thru some lame mechanism that nukes caps or whatever, you
data is still useable.  The last one is because other lisp dialects
have often been case insensitive.

I'm not really ready to undertake a full defense of these reasons,
but considering the overall experience, talent, and gurosity of the
R?RS authors, I think we should understand that there may indeed be
valid reasons to the decision to be case insensitive.  This is not to
say that guile should abide by the desires of the R?RS authors at all
times.

> > But then, in practise, not following RnRS cause trouble, 
> 
> Why?  I haven't been following this, but does guile's current
> case-sensitivity really prove a problem?  Surely RnRS is out of step
> here, not guile?

If you use R?RS code that assume case insensitivity yes it does become
a problem (tho you can indeed flip a switch in guile).  

I think that if we're going to move away from a case insensitive
reader, we need to have a much better abstraction for the reader than
we presently do.  As Jim pointed out, a global flag is hardly an
optimal mechanism.  Per Bothner had some nice reccomendations, which I
think we should investigate further.  I also think that maybe we
should take a look at the reader in Lisp (tho it's a tad on the
complex side for my scheme tastes) in particular the way that ACL5.0
handles the issue of case sensitivity.  It is a free (beer)
distribution of common lisp for linux that in it's most recent
release breaks with the case insensitive tradition.  It has a nice
mechanism to deal with issues of using code from both traditions, and
perhaps it could show us something about how to get the best of both
worlds.