gerd.moellmann@... (Gerd Moellmann) writes:
> Christophe Rhodes <csr21@...> writes:
>> I happen to be working on PCL at the moment; I've queued the bug
>> report to investigate, hopefully this weekend.
> FWIW, these fixes in CMUCL might be of interest:
> 2003-02-06 Gerd Moellmann <gerd.moellmann@...>
> * pcl/defs.lisp (standard-method): Change superclass
> plist-mixin to documentation-mixin so that we don't throw
> away the method documentation.
Interesting. I came to the conclusion this morning that
DOCUMENTATION-MIXIN was actually useless, largely because
DOCUMENTATION has a reversed argument precedence order.
That is, given methods on
((x function) (y (eql 't)))
((x documentation-mixin) y)
and arguments of class
(STANDARD-GENERIC-FUNCTION (EQL T))
the _first_ method gets called, not the second, irresepective of the
superclass order of standard-generic-function. Is that not so?
Thanks for pointing out that we weren't preserving method docstrings,
> * pcl/cmucl-documentation.lisp (setf documentation): Use
> * pcl/defcombin.lisp (set-random-documentation): New function.
> (load-short-defcombin, load-long-defcombin): Use it.
Ah yes. I don't like the fact that we're (both) cheating here; in an
ideal world, I would like to have just the methods defined by ANSI on
DOCUMENTATION, plus documented extensions for e.g. methods and slotds,
rather than this overarching ((x foo) (y symbol)) method. This may
just be a matter of taste; I'm fairly sure such a method isn't
nonconforming (though Paul is welcome to correct me if I'm wrong :-).
I'm looking at arranging things for this to be possible.
> * pcl/env.lisp (describe-object) <standard-generic-function>:
> Print the generic function doc string, if any. Print method doc
> (describe-object) <class>: Print slots.
> * code/describe.lisp (describe-symbol): If a class names
> a PCL class, describe-object the PCL class.
Ah, yes, describe is a whole nother problem :-)
Thanks for the note,
http://www-jcsu.jesus.cam.ac.uk/~csr21/ +44 1223 510 299/+44 7729 383 757
(set-pprint-dispatch 'number (lambda (s o) (declare (special b)) (format s b)))
(defvar b "~&Just another Lisp hacker~%") (pprint #36rJesusCollegeCambridge)