Case sensitivity (was Conjugate is weird)



Stavros said:
>> Many languages nowadays are case-sensitive, so in theory you
>> could have distinct identifiers Foo, foo, FOO, and even for that 
>> matter fOo, foO, and FoO.  But everyone would agree (right?)
>> that this would be poor practice.

CY answered:
> Poor programming practice, yes.  But not necessarily in 
> things like scientific descriptions for classrooms - if the 
> book is using FOO to represent a vector and foo to represent 
> a scalar, you want to make your worksheets/whatever work like that.

Of course, in theory, classroom material could be doing completely
arbitrary things.  But even if the two-way distinction foo/Foo or
foo/FOO is used, I am skeptical that anyone would use the distinction
FoO/fOo!

> If I understand correctly, defint will still be defint and 
> integrate will still be integrate - if someone types 
> Integrate we can prompt them to type integrate.  What 
> problems to you forsee?

-- At some point, I think we'll need to systematize the command names.
But I REALLY don't want to open that can of worms now.

-- Though DWIM may or may not useful, I do NOT think it is a substitute
for good design in the first place.  It is easy to autocorrect "taht" to
"that" because "that" is almost certainly wrong.  But if the built-in
function is called "diff" and I happen to want to use "Diff" as a finite
difference operator, how is Maxima going to know that?  Presumably this
is precisely the sort of thing you *have* case-sensitivity for.  If
you're going to make it a pain to use, why have it at all?

>> Then again, maybe our target audience really *is* geeky.
> I'm thinking yes.

Maxima should be accessible to as large a population as possible,
including high-school students, people in the third world, etc. etc.  I
do NOT think we should be looking in a mirror to define our target
population.  On the contrary, I think we need to make sure that it is
falling-off-a-log-simple to get started with Maxima.

> There might be another way to handle it - we might make the 
> low level processing system in maxima behave the way the 
> programmers would like it to, and have the front end handle 
> the user visible formatting like that.  It could be the front 
> end's job to translate the formatted stuff to code the low 
> level maxima can understand, like R -> capital_r.

Yes, I think that is certainly part of the solution.

> Or, if people really want case insensitive, we could add a 
> toggle where Maxima automatically makes all input lower case 
> for evaluation.... When there's a case like this where there's
> not a lot of consensus, I think we should look for a way to
> accomidate both positions. 

No, no, no!  This means that some user-written packages will be
incompatible with other users' environments.  Very bad.  We should have
a *single* user community.

       -s