X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Fcpl.lisp;h=f834b1a6e870852c127363915dd02aa9909e3bbe;hb=d40a76606c86722b0aef8179155f9f2840739b72;hp=75bec0d1dc3bf2452c7f754c53675354fdcb4a8d;hpb=a530bbe337109d898d5b4a001fc8f1afa3b5dc39;p=sbcl.git diff --git a/src/pcl/cpl.lisp b/src/pcl/cpl.lisp index 75bec0d..f834b1a 100644 --- a/src/pcl/cpl.lisp +++ b/src/pcl/cpl.lisp @@ -22,12 +22,9 @@ ;;;; specification. (in-package "SB-PCL") - -(sb-int:file-comment - "$Header$") -;;; compute-class-precedence-list -;;; +;;;; COMPUTE-CLASS-PRECEDENCE-LIST and friends + ;;; Knuth section 2.2.3 has some interesting notes on this. ;;; ;;; What appears here is basically the algorithm presented there. @@ -81,11 +78,12 @@ (compute-std-cpl root (class-direct-superclasses root))) (defstruct (class-precedence-description - (:conc-name nil) - (:print-object (lambda (obj str) - (print-unreadable-object (obj str :type t) - (format str "~D" (cpd-count obj))))) - (:constructor make-cpd ())) + (:conc-name nil) + (:print-object (lambda (obj str) + (print-unreadable-object (obj str :type t) + (format str "~D" (cpd-count obj))))) + (:constructor make-cpd ()) + (:copier nil)) (cpd-class nil) (cpd-supers ()) (cpd-after ()) @@ -249,21 +247,21 @@ (format nil "named ~S" (class-name class)) class)))) (mapcar - #'(lambda (reason) - (ecase (caddr reason) - (:super - (format - nil - "The class ~A appears in the supers of the class ~A." - (class-or-name (cadr reason)) - (class-or-name (car reason)))) - (:in-supers - (format - nil - "The class ~A follows the class ~A in the supers of the class ~A." - (class-or-name (cadr reason)) - (class-or-name (car reason)) - (class-or-name (cadddr reason)))))) + (lambda (reason) + (ecase (caddr reason) + (:super + (format + nil + "The class ~A appears in the supers of the class ~A." + (class-or-name (cadr reason)) + (class-or-name (car reason)))) + (:in-supers + (format + nil + "The class ~A follows the class ~A in the supers of the class ~A." + (class-or-name (cadr reason)) + (class-or-name (car reason)) + (class-or-name (cadddr reason)))))) reasons))) (defun find-cycle-reasons (all-cpds)