The following list is based on a similar one in closer-to-mop, explaining
the problems in ECL which are solved by that library. It clarifies the
status of MOP-compliance as of today -- very few things remain to be fixed,
but a lot of testing is still required.
Fixed in git/CVS
- The functions ADD-DIRECT-METHOD and REMOVE-DIRECT-METHOD don't exist,
and thus are also not called.
- ADD-METHOD doesn't call FIND-METHOD or REMOVE-METHOD to remove
potentially replaced methods, but uses some internal implementation instead.
- SPECIALIZER-DIRECT-GENERIC-FUNCTIONS and SPECIALIZER-DIRECT-METHODS
don't exist, and thus are also not updated by ADD-METHOD and REMOVE-METHOD.
- VALIDATE-SUPERCLASS doesn't exist, and thus isn't called to determine
whether two classes in a direct superclass relationship have compatible
metaclasses.
- COMPUTE-APPLICABLE-METHODS and COMPUTE-EFFECTIVE-METHOD are not
generic functions.
- COMPUTE-APPLICABLE-METHODS-USING-CLASSES doesn't exist.
- DEFMETHOD doesn't call GENERIC-FUNCTION-METHOD-CLASS or
MAKE-METHOD-LAMBDA.
- The dependent protocols for classes and generic functions are not
implemented.
- EQL-SPECIALIZER, EQL-SPECIALIZER-OBJECT and INTERN-EQL-SPECIALIZER
don't exist. In ECL, eql specializers are lists not objects. I have
provided EQL-SPECIALIZER as a type (not as a class) and
EQL-SPECIALIZER-OBJECT and INTERN-EQL-SPECIALIZER to work on lists, and a
class EQL-SPECIALIZER* and corresponding EQL-SPECIALIZER-OBJECT* and
INTERN-EQL-SPECILAIZER* to soften the incompatibilities.
- EXTRACT-LAMBDA-LIST and EXTRACT-SPECIALIZER-NAMES don't exist.
- FIND-METHOD and REMOVE-METHOD are not generic functions.
- The function invocation protocol doesn't call
COMPUTE-APPLICABLE-METHODS, COMPUTE-APPLICABLE-METHODS-USING-CLASSES, and
COMPUTE-EFFECTIVE-METHOD.
- GENERIC-FUNCTION-DECLARATIONS doesn't exist.
- Generic functions cannot be empty when called.
- MAKE-METHOD-LAMBDA doesn't exist.
- The class METAOBJECT doesn't exist.
- The class SPECIALIZER doesn't exist.
- Method functions don't take parameters as specified in AMOP, but
instead just the parameters that the generic function receives.
- Method metaobjects are not initialized with :DOCUMENTATION.
- (SETF CLASS-NAME) and (SETF GENERIC-FUNCTION-NAME) are not implemented
by way of calling REINITIALIZE-INSTANCE.
To be fixed
- ADD-METHOD, REMOVE-METHOD, INITIALIZE-INSTANCE and
REINITIALIZE-INSTANCE do not determine a new discriminating function.
- Class initialization doesn't call READER-METHOD-CLASS and
WRITER-METHOD-CLASS for accessor methods. However, ECL merely delays
invocation of those two functions until a class is finalized, so this
shouldn't be a problem in practice.
- Class reinitialization does not remove direct subclasses that should
be removed.
- COMPUTE-EFFECTIVE-METHOD returns a function object, not an effective
method form.
- DEFGENERIC does not call FIND-METHOD-COMBINATION.
- FIND-METHOD-COMBINATION doesn't exist.
- GENERIC-FUNCTION-METHOD-CLASS is not a generic function.
- Multiple slot options are not passed as lists to
DIRECT-SLOT-DEFINITION-CLASS.
- The automatically created accessor methods in DEFCLASS forms don't
call SLOT-VALUE-USING-CLASS and (SETF SLOT-VALUE-USING-CLASS).
- Subclasses of BUILT-IN-CLASS, CLASS, DIRECT-SLOT-DEFINITION,
EFFECTIVE-SLOT-DEFINITION, FORWARD-REFERENCED-CLASS,
FUNCALLABLE-STANDARD-CLASS, SLOT-DEFINITION, STANDARD-ACCESSOR-METHOD,
STANDARD-CLASS, STANDARD-DIRECT-SLOT-DEFINITION,
STANDARD-EFFECTIVE-SLOT-DEFINITION, STANDARD-GENERIC-FUNCTION,
STANDARD-METHOD, STANDARD-READER-METHOD, STANDARD-SLOT-DEFINITION, and
STANDARD-WRITER-METHOD will inherit slots whose names are exported symbols
and/or accessible in the package common-lisp-user.
--
Instituto de FĂsica Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)
http://juanjose.garciaripoll.googlepages.com
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Ecls-list mailing list
Ecls-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ecls-list