Subject: Case-sensitivity goals, policy and implementation
From: Stavros Macrakis
Date: Sun, 10 Oct 2004 14:58:51 -0400
If we define both "sin" and "SIN", then the user has to know which
functions are built-in and which aren't. What about functions defined
in Share, either in Maxima language or Lisp? What about packages
distributed by people outside the official distribution (as NSET used
to be, for example)? What about built-in constants like %PI, INF,
etc.? Is the function "GAMMA" the same as the function "gamma", but
the constant "%GAMMA" different from the constant "%gamma"?
What happens when a user redefines a built-in function? That is
perfectly legal (though it does give a warning), and occasionally it
is even useful. The proposed implementation would redefine the
function for one spelling and leave the built-in definition for the
other. Yuck.
I agree that writing |$integrate| all over the place would be a pain,
but surely we can find a solution that doesn't require clumsy
programming, but also gives the user a simple, consistent experience.
-s