CLHS: Issue SLOT-MISSING-VALUES Writeup

#

## Issue SLOT-MISSING-VALUES Writeup

    Issue:         SLOT-MISSING-VALUES

    References:    88-002R p.2-78..79

    Category:      CLARIFICATION

    Edit history:  29-Apr-90, Version 1 by Moon

    Problem description:

      The document says that all values returned by a SLOT-UNBOUND or
      SLOT-MISSING method are returned from SLOT-VALUE, SETF, SLOT-BOUNDP, or
      SLOT-MAKUNBOUND.  However, the language mandates particular values to be
      returned by SETF and by SLOT-MAKUNBOUND, and mandates that SLOT-VALUE and
      SLOT-BOUNDP return exactly one value.  If methods can change this,
      efficient compilation becomes very difficult.

      This is Symbolics issue #19.

    Proposal (SLOT-MISSING-VALUES:SPECIFY):

      Specify exactly what is done with the values returned from a SLOT-UNBOUND
      or SLOT-MISSING method, as follows:

      If the operation was SETF or SLOT-MAKUNBOUND, the values are ignored.

      If the operation was SLOT-VALUE or SLOT-BOUNDP, exactly one value is
      returned; extra values returned by the method are ignored, and if the
      method returns no values, NIL is returned.

      If the operation was SLOT-BOUNDP and the method returns a value other
      than NIL, SLOT-BOUNDP might return any object other than NIL that it can
      validly return; only the truth or falsity of the method's value matters.

    Current practice:

      It's likely that all CLOS implementations already conform to the proposal,
      since implementing what the document says would be extremely difficult.
      I have not actually tested any implementations.

    Cost to Implementors:

      What's proposed is what's easiest to implement.

    Cost to Users:

      None, since it's unlikely that any users would depend on being able to
      force SLOT-VALUE to return two values, or to force SETF of SLOT-VALUE to
      return something different from new-value.

    Cost of non-adoption:

      CLOS will be seriously difficult to implement correctly.

    Performance impact:

      Implementing CLOS correctly will cause a serious efficiency impact on
      SLOT-VALUE if this proposal is not adopted, since it will have to be
      capable of dynamically deciding at run time to return multiple values.

    Benefits:

      Simpler and more consistent language.

    Esthetics:

      Simpler and more consistent language.

    Discussion:

      None.

Copyright 1996-2005, LispWorks Ltd. All rights reserved.