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

Re: REMF-DESTRUCTION-UNSPECIFIED (Version 2)



    Date: 11 Nov 87 01:49 PST
    From: Masinter.pa@Xerox.COM

    ...
     (REMF place indicator)
      is permitted to either SETF place or to SETF the CDR of the
      part of the top-level list in place which points to what
      (GET-PROPERTIES place (LIST indicator)) would return.
 
      In addition, the cells removed may be "destroyed".

If we say this, I would prefer to say they must be destroyed -- specifically,
the car of both removed cells must be set to NIL. This would have the following
advantages:

 * DLA would get his efficiency boost.
 * Implementations would agree.
 * The minimal usefulness of the defined behavior would tend to
   actively thwart users taking any advantage of the cells in the
   first place.

     (SETF (GET symbol indicator) value)
      behaves exactly the same as
      (SETF (GETF (SYMBOL-PLIST symbol) indicator) value).

     (NREVERSE sequence),  (DELETE object sequence ...), (DELETE-IF test
    sequence ...), (DELETE-IF-NOT test sequence ...), (DELETE-DUPLICATES
    sequence ...), (NSUBSTITUTE new-object old-object sequence ...),
    (NSUBSTITUTE-IF new-object test sequence ...), (NSUBSTITUTE-IF-NOT
    new-object test sequence ...)

       when sequence is a list may "destroy" sequence

    ...

You use this verb destroy a bunch, but I think it is the nature of the
original problem -- not the solution.

I feel that we should say very explicitly in the new spec that they may
only affect the cdr chain or that they may only affect the the cars of
the cells in the chain and must leave the cdr chain itself intact or
that they may affect either the cars or the cdrs in the chain.  Verbs
like "destroy" should either be explicitly defined to mean one of these
very specific things in the new glossary, or should be avoided entirely.

I also feel that code portability will be affected unless we agree that
either the cars or the cdrs are what can change.