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

Re: Issue: REST-LIST-ALLOCATION (Version 3)

    Date: Tue, 3 Jan 89 08:59:44 PDT
    From: William Clinger <will@fog.cs.uoregon.edu>

    Moon writes of his example that:

      All I did was change APPLY to FUNCALL, and remove the corresponding
      &REST.  I find it inconsistent if calling with APPLY is guaranteed to
      copy one of the arguments, but calling with FUNCALL is not.

    To my way of thinking, APPLY never copies any arguments so APPLY is
    perfectly consistent with FUNCALL even if &REST lists are always
    freshly consed.  You see, my understanding of APPLY is that it calls
    its first argument on the elements of the list that is its second
    argument (or the analagous thing if you give it more than two arguments).
    The arguments, therefore, are the elements of the list, not the list
    itself, and so the arguments are not copied.

    It is true that the list created by &REST list processing may happen to
    be a copy of some existing list, possibly even a list that was once
    passed to APPLY, but I don't see why APPLY should be given credit for
    having made the copy.

Something happens in between the APPLY and the &REST.  You think of it as
connected with the &REST, I think of it as connected with the APPLY, and
someone else might think of it as an independent thing not really connected
with either of them.  Okay.

Peace yourself.