Inconsistency when using previously defined variables as arguments to functions



It is possible to define functions in Maxima that quote their arguments 
implicitly.
Whether to do so is generally controversial, with people taking strong 
stands on
either side of the issue.
x:y
solve ( ...., x)   does one solve for x or y?

If you have defined 'i' and forgotten it, then you have made an error.  
Some systems require
that you define two distinct classes. Symbols and  variables. Only 
variables may be given
values. Symbols are 'indeterminates' and can't be assigned values.

A more principled view of this activity is to say that the arguments to 
the function sum  (etc)
that are themselves functions, must display their bound variables 
explicitly.

That is,

limit  (    lambda([i], 1/i),  infinity)

integrate( lambda([x], a*x+b) , [-1,1])

etc.


On 1/26/2011 5:23 AM, thomas wrote:
> Thank you for your reply. :)
> Even though that is a nice work-around, it doesn't really solve the 
> inconsistency-problem. And it's quite inconvinient to have to quote 
> the variables in each expression I want to differentiate, limit, etc.

Maybe we should implement a feature so that when you declare a name 
constant so you can never assign values to it.



> Also I think that I'm probably not the only person who stumbled uppon 
> this problem: when calculating things like "limit(1/i, i, infinity);" 
> I might've already forgotten that I defined "i" in the first place, 
> and might then use an incorrect result.
That happens.  One person's incorrect result is another's correct result.

RJF