value cell issue



>  After all, one perfectly
> respectable way to implement lexical scope is to use an alist in the
> interpreter and store values in the stack frame in compiled code -- so
> there are no value cells at all.  

The current
maxima code base makes a lot of use of properties of symbols and
if I understand correctly if someone sets a propery of a symbol it is
global even if the symbol is used somewhere as a local variable.

So it seem to me that properties should also be rebound  to get clean
recursive functions etc...
It is rather unclear to me how this can be achieved efficiently without
getting
rid of properties altogether and using some other data structure to hold
"meta
information" (we are then basically in an object oriented frame work).
If the symbols in the maxima language were to be thought of as ordinary
variables
that could hold one object (with attributes) and ***nothing more*** then
it would
be a lot easier to think about them, and also probably a lot easier
to write an interpreter and compiler (after all interpreters and compilers
for algol like languages are very well understood and are part
of the CS undergraduate curriculum).

Do you think this is correct? My mind is somewhat unclear on this as
"symbols" in lisp are a somewhat strange concept that does not seem
to exist in any other language I know (I don't know any other functional
languages though).

Michel