- (format stream "~A is a generic function.~%" fun)
- (format stream "Its arguments are:~% ~S~%"
- (generic-function-pretty-arglist fun))
- (format stream "Its methods are:")
- (dolist (method (generic-function-methods fun))
- (format stream "~2% ~{~S ~}~:S =>~%"
- (method-qualifiers method)
- (unparse-specializers method))
- (describe-object (or (method-fast-function method)
- (method-function method))
- stream))
- (when *describe-metaobjects-as-objects-p*
- (call-next-method)))
+ (format stream "~&~A is a generic function." fun)
+ (when (documentation fun t)
+ (format stream "~&Its documentation is: ~A" (documentation fun t)))
+ (format stream "~&Its lambda-list is:~& ~S"
+ (generic-function-pretty-arglist fun))
+ (format stream "~&Its method-combination is:~& ~S"
+ (generic-function-method-combination fun))
+ (let ((methods (generic-function-methods fun)))
+ (if (null methods)
+ (format stream "~&It has no methods.~%")
+ (let ((gf-name (generic-function-name fun)))
+ (format stream "~&Its methods are:")
+ (dolist (method methods)
+ (format stream "~& (~A ~{~S ~}~:S)~%"
+ gf-name
+ (method-qualifiers method)
+ (unparse-specializers method))
+ (when (documentation method t)
+ (format stream "~& Method documentation: ~A"
+ (documentation method t))))))))