[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Issue: DYNAMIC-EXTENT (Version 1)



Version 2 of this writeup didn't mention one of the criticisms I sent on 1
July, namely:

"a) it is disturbing to introduce a construct within which a casual change
of (CONS X (LIST Y Z)) to  (LIST X Y Z) could introduce a serious bug
(e.g., if the tail were stashed away
somewhere.)"

and also that the proposal doesn't seem to address objects other than
lists; what of DEFSTRUCT or DEFCLASS objects?

I wonder if it might be useful to think about what the semantics of
declaring something to be "dynamic extent" really means. 

For example, I think of a type declaration as a promise from the programmer
to the compiler that a TYPEP assertion will at certain points (exactly what
points being subject to some debate).

When you declare something as DYNAMIC-EXTENT, what is it you are promising
to the compiler? That the value of the variable or any part of it will not
be newly stored in any other permanent structure? It or any subpart of it
will not be referenced outside of the dynamic extent of the enclosing form?

I think DYNAMIC-EXTENT and WITH-DYANMIC-EXTENT should be discussed
together, since they seem to overlap in the problem they are attacking.

They don't seem like they are ready for voting, however.