Stavros Macrakis wrote:
>> >When assigning any of these to a named variable, they should be
>> >> assigned to the "value" cell of that variable.
>> >That is an implementation detail.
>> Yes that's true. But the current difference in semantics between lists
>> and arrays is partially caused by this "implementation detail".
>> The underlying CL system treats the value cell
>> of a symbol very differently from its other attributes...
>> So I think life will be ***a lot*** easier if we decide to store
>> everything in the value cell (including perhaps functions).
>
>
> I think we agree on the goal of cleaner semantics. At the risk of
> sounding pedantic, though, I will insist that specifying behavior in
> terms of implementation is unwise. 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. Talking in terms of symbols' value
> cells also doesn't clarify the semantics of assigning to *part* of an
> object: where is the symbol and where is the "value cell" of a[3] in
> an expression like a[3] : 5?
>
Ok. But people have been using lisp semantics to explain the
current behaviour of maxima. So I was just following that tradition.
Would you agree that a symbol (perhaps I should say variable) should
stand for only one thing at a time?
Michel