[Small-cl-src-discuss] Re: small mop compatability layer

Christophe Rhodes csr21 at cam.ac.uk
Fri Oct 1 15:23:37 UTC 2004


marco <mb at bese.it> writes:

> The mopp package also exports the function
> SLOT-DEFINITION-DOCUMENTATION which while not strictly part of
> the MOP really should be and is implementened on most systems.

It surprises me slightly that you think that
SLOT-DEFINITION-DOCUMENTATION shouldn't be a generic function.

> IMPLEMENTATION - A keyword indetifying the implementation, one
> of: :OPENMCL, :SBCL, :CMU, :LISPWORKS.

> (let ((external-symbols '()))
>   (do-external-symbols (sym (find-package :it.bese.arnesi.mopp))
>     (push sym external-symbols))
>   (dolist (sym external-symbols)
>     (unless (provide-mopp-symbol sym #+openmcl :openmcl
>                                      #+sbcl :sbcl
>                                      #+cmu :cmu
>                                      #+lispworks :lispworks)
>       (warn "Unimplemented MOP symbol: ~S" sym))))

You could be slightly nicer to other implementations by doing
  ... (unless (provide-mopp-symbol sym (or #+openmcl :openmcl
                                           #+sbcl :sbcl
                                           #+cmu :cmu
                                           #+lispworks :lispworks
                                           :unimplemented))
        (warn ...))
and either provide a method on :unimplemented or a method on
NO-APPLICABLE-METHOD.

> (defmethod provide-mopp-symbol ((symbol symbol)
>                                 (implementation (eql :sbcl)))
>   (when (find-symbol (string symbol) :sb-pcl)
>     (import-to-mopp (find-symbol (string symbol) :sb-pcl))))

Unless there's a reason not to, you should be using the "SB-MOP"
package here.  (If there is a reason, sbcl-devel wants to know about
it!)

Cheers,

Christophe






More information about the Small-cl-src-discuss mailing list