marco <mb(a)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