[LISPWORKS][Common Lisp HyperSpec (TM)] [Previous][Up][Next]


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.


[Starting Points][Contents][Index][Symbols][Glossary][Issues]
Copyright 1996-2005, LispWorks Ltd. All rights reserved.