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



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


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.


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.


Simpler and more consistent language.


Simpler and more consistent language.



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