If then else and unevaluated conditionals



>
> Here I agree with you Robert -- being able to manipulate expressions
> as programs and programs as expressions is useful and powerful in
> Maxima -- and in fact I think we've only scratched the surface of the
> possibilities.  It works quite smoothly for side-effect-free
> mathematical expressions, but once you have side-effects and errors,
> things get messier.  For example, consider
>
>          x : if a>0 then 1 else 0
>
Side effects are precisely the point. A statement like

x:x+1

is easy to understand conceptually if you think of x as a variable
containing a maxima expression (I would prefer to write @x).

It becomes much harder to understand if you view x itself as
a maxima expression. Then you have to view certain maxima
symbols as being bound to expresssions. But this binding
cannot be transitive (as it would be in  mathematics).

Consider

ev(x);
ev(ev(x));
...

Michel