[r6rs-discuss] Case sensitivity
Guillermo J. Rozas
gjr6765 at gmail.com
Sat Feb 21 23:56:19 EST 2009
>> I have no idea what you are talking about here. What starting
> The fact that *most* "ordinary" people don't use a language with a
> notion of upper and lower case.
But most of the world is learning English as well, which is largely
>>> I don't know what turned you on to Scheme (or what made you leave
>>> it), but for me it definitely was not the fact that it was
>> Nothing made me leave it. It is still my favorite language.
> (You began with "I no longer consider myself actively working on
These are not incompatible. I don't see any inconsistency.
>>> All of these are good points for Scheme, but completely unrelated
>>> to the case issue. If you want to be a non-conformist for the
>>> sake of non-conformism then I'm sure that there is plenty that
>>> could be done for the language in that direction.
>> No. The point is that conforming to what other languages do is a
>> very weak argument for Scheme, as it is _very_ different.
> Not when you get to talk to these other languages. When you "talk" to
> xml or to a dll, case-sensitive symbols and identifiers make things
> much more convenient.
Why aren't you using strings? And the convenience of the expert should
not come at the expense of the inconvenience of the novice.
>> I'm not asking for new 'incompatibilities'. I'm just asking that
>> the language not be changed spuriously. The hurdle should be very
> (I think that the amount of flames on this subject in any kind of
> Scheme related forum pretty much guarantees that it was not a
> "spurious" change.)
It surely looks like it from where I stand.
>>> So on one hand you argue for case-insensitivity because it's "what
>>> ordinary people are used to", and on the other you argue about for
>>> case insensitivity because it doesn't conforms to what
>>> "programmers in other programming languages expect"?
>> No. Non-conformism is not a goal. Being different is not a goal.
>> But being the same is not a goal either. Thus changing because
>> other programmers expect it is not a goal.
> The two goals that matter to me wrt case-sensitivity have nothing to
> do with what other programmers expect.
Good, then don't bring them up.
>> However, for a primarily teaching language, making it easier to
>> teach to people who don't already program is important.
> A point that I made in the other post is that I really don't see where
> is the big teaching benefit of case-insensitivity. I really don't.
> Perhaps it's the fact that I learned a different alphabet before I
> learned the one with 26 letters.
> But you know what? I'm officially declaring myself tired of this
> "primarily teaching language" myth. I've been fighting way too many
> years with people who had this misconception of "yes, it's a cute
> language to learn programming with, but you must be joking if you
> expect me to use it in a *real* application". I'm sure that there are
> plenty of people around who have similar experience. In the
> registration for voting on R6RS I said:
> | "Scheme" as a language suffered loss after loss to many inferior
> | languages (shell scripts, miscellaneous extension languages, TCL,
> | been using Scheme would suffer the same problems, some died (SCWM),
> | some switched their focus away from Scheme (Gimp).
> I take the "primarily teaching language" as one of the biggest
> contributions to these failures.
We all have our opinions on this issue. I don't think it has to do with
the fact that it is primarily a teaching language. But we can probably
argue about that too.
At any rate, whether we want it to be or not, it is primarily a teaching
language. We can change it in the hopes that it becomes the bulk
programming language that Java or C++ is, but I strongly suspect that
you wouldn't succeed, and you'd make it a worse teaching language
in the process. Who would benefit?
> So yes, it is a good language to teach -- and I continue to do so.
> But it's a damn good language to use for the rest of your professional
> life as a programmer, and keeping people as active Scheme users is
> much more important to me.
As much as I wish that what you say is true, it plainly isn't.
Even as a teaching language, the number of people taught Scheme
is small, and hence when you have to program in a large group,
it would involve re-training.
There are many other reasons why the Lisp languages are not used
Clearly Common Lisp was not primarily a teaching language, yet it
failed to gain a significant foothold in industry as well.
Don't you think that it is far more likely that the commonalities
Common Lisp and Scheme (of which being primarily a teaching language
is not one) had something to do with their lack of success as commercial
I really think you are barking up the wrong tree, but in the process, by
(apparently) intentionally ignoring the one partial success that Scheme
has had, you may end up ruining it even for that purpose.
>> After all, programmers are used to each language having its own
> Yes -- and designers are used to trying to get the amount of
> peculiarities smaller when not needed.
Really? That has never been a goal of language design, as far
as I can tell.
Otherwise, we may as well all use C or Java. Let's reduce the
peculiarities to the empty set!
>>> I take the last part as much more important when it comes to
>>> identifiers -- their syntax is not something that should "leak"
>>> out to the end user in any way, so "what ordinary people are used
>>> to" is a much weaker argument than "what ordinary programmers are
>>> used to".
>> What ordinary people are used to is important for a teaching
>> Programmers are far more adaptable.
> [*cough*] In the part of this argument that revolves around fitting
> other languages, the part that is important is, for example, accessing
> a function from a dll or spitting out an xml identifier. These
> "programmers" are therefore the people who designed these
> case-sensitive interfaces. They're certainly very far from
When I output things for other languages, I use strings, not symbols.
When I use a foreign-language interface, I define the linkage using
strings, not symbols.
They never get in my way. Not once.
And remember, different languages have different rules for what
constitutes an identifier.
Would you then advocating changing the rules in Scheme so that
it matched these external constraints? And which ones, then?
Why don't we make Scheme identifiers be name-mangled like C++
identifiers are at link time?
More information about the r6rs-discuss