>>>>> "Stavros" == Stavros Macrakis <macrakis at alum.mit.edu> writes:
Stavros> Robert,
Stavros> I hope you're pulling my leg.
Stavros> Although Maxima is a permissive system in many ways --
Stavros> and that is a good thing -- allowing nonsensical
Stavros> operations without warning is bound to cause
Stavros> problems. ?If the user really wants to use the symbol %pi
Stavros> for a variable, they can subst something else for it.
Stavros> How far do you want to take this? ?What about diff(2,2)?
Stavros> ?Should that be 0 because 2 is a constant, or 1 because 2
Stavros> should be treated as a variable? ?How about diff(2,1) --
Stavros> do we treat 2 as = 2*1? Should we allow block([%pi:22/7],
Stavros> ...)? ?How do we explain to a user that diff(%i^2,%i) is
Stavros> 0, but diff(%i,%i) is 1?
Stavros> Besides the question of inconsistent results, there is
Stavros> the simple pragmatic issue that I'm pretty confident that
Stavros> in the vast majority of cases where users try to use %i,
Stavros> etc. as variables, that is not actually their intent.
Stavros> Heck, if we're going to allow binding constants, why
Stavros> don't we allow %pi: 22/7, assert(equal(%pi,22/7)), and
Stavros> for that matter assert(-1 > 1)? ?After all, "whether it
Stavros> makes sense is the user's problem, not ours".
I basically agree with all of this. People already confuse pi and
%pi, i and %i, e and %e, and, recently %gamma. Let's not encourage
the confusion.
Ray