On 1/26/07, Stavros Macrakis <macrakis at alum.mit.edu> 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?
>
> As I say, I think we agree on the goal, but I believe we should
> specify it independently of the implementation.
>
> -s
>