The words "variable" and "function" are unfortunately used in different
ways in the documentation that might be confusing to readers.
A variable can be an "indeterminate" as x in diff(sin(x),x)
or it can be a programming language name as in x: 45
or it can be part of a mechanism to control the semantics of maxima, e.g.
fpprec: 100, numer: true, etc.
or it can even be a message as return('Arg_Too_Big);
syntactically it could look like a name, or perhaps a subscripted name as
below, x[i]. Maxima is inconsistent in treatment of subscripted names as
variables.
The term function also has problems.
Is solve() a Maxima "function" ? or should solve be referred to as
something else? Like a command?
There is a mathematical cos() function which is not the same as the cos() of
Maxima. They share a lot of properties, but not all.
Tradition in programming languages says that (in a functional programming
language), a function applied to a set of arguments will always return the
same value for the same arguments. This is not true in Maxima, generally.
I think that for the documentation to talk about global "variables" and
"flags" is kind of sloppy.
A flag traditionally had only 2 values 0/1 or true/false. This is not the
case in Maxima.
The use of global variables is unfortunate, but no one has a really good
alternative, usually.
RJf
_____
From: maxima-bounces at math.utexas.edu [mailto:maxima-bounces at math.utexas.edu]
On Behalf Of Stavros Macrakis
Sent: Sunday, November 18, 2007 1:23 PM
To: Vadim V. Zhytnikov
Cc: Maxima List
Subject: Re: [Maxima] Atom vs Symbol in Maxima manual
On Nov 18, 2007 2:11 PM, Vadim V. Zhytnikov <vvzhy at mail.ru> wrote:
...But I see that in many-many places Maxima manual uses term atom
in the context where actually is appropriate...
It seems to me we should make more clear distinction
between atoms and symbols and change wording in the
manual accordingly.
Agreed. One of the reasons for the confusion is that in the early days of
Maxima, MacLisp had no standard word for a symbol.
There is another confusion we need to be careful about, too, that between a
symbol or identifier on the one hand, and a variable name. A variable name
may be not only a symbol, but also a subscripted expression, e.g.
diff(x[i]^2,x[i]) => 2*x[i]. Unfortunately, parts of Maxima don't allow
arbitrary variable names where they should: limit(x[i],x[i],0) => internal
error (bug 1834217).
-s