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

Re: Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (version 10)



    Date: Mon, 19 Jun 89 13:55:50 MDT
    From: sandra%defun@cs.utah.edu (Sandra J Loosemore)

    > 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.

Reusing the storage wasn't my idea, so removing that wart is fine with me.

    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. 

I'm neutral on this.  I am able to imagine applications where the
ADJUSTABLE-ARRAY-P would be useful to call before calling ADJUST-ARRAY.

It sounds like I'm elected to prepare a slightly amended version of the
proposal in a couple of days.