[Ecls-list] MOP status

Juan Jose Garcia-Ripoll juanjose.garciaripoll at googlemail.com
Tue Apr 24 22:20:39 UTC 2012


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/ecl-devel/attachments/20120425/889fe8d7/attachment.html>


More information about the ecl-devel mailing list