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


> I see, the word "reference" is ambiguous.  It could mean performing an
> operation on the array, or it could mean having a reference in the garbage
> collector sense.  How about if "any reference to" were amended to read
> "any operation on"?

I suppose that would be OK, as would something like "any attempt to
access".  However, I'm still a little apprehensive here that there
might still be unexpected problems, like if the user is stepping
through the code with the debugger and tries to examine the values of
local variables.  The real problem is that this operation can
potentially invalidate the original object by freeing some of its
storage, or otherwise stuffing garbage into it.  I don't think that
any other destructive operations are permitted to do this, and it does
seem to violate the principle that Lisp objects have indefinite
extent.  I wonder if it's worth adding such ugliness to the language
just for the sake of an efficiency hack.  I would feel more
comfortable if this sentence were removed entirely and ADJUST-ARRAY
not permitted to bash the original array unless it returns an object
that is EQ to it.

Incidentally, I have discussed this issue more generally with others
here.  We like the idea of making ADJUST-ARRAY work on all arrays, but
we would like to see ADJUSTABLE-ARRAY-P removed from the language
altogether.  We don't think that the way this proposal redefines it is
particularly useful.