marco mb@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
Christophe Rhodes csr21@cam.ac.uk writes:
marco mb@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.
on openmcl and lispworks it is. on other lisps it's a wrapper around a generic function, what's to be gained?
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.
good idea.
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!)
the symbol metaobject exists in sb-pcl (though it does not name a class), it doesn't exist in sb-mop. [hence the Cc to sbcl-devel].
small-cl-src-discuss@common-lisp.net