Plaster
New
List
Login
common-lisp
default
anonymous
2023.02.11 09:42:34
(defun direct-superclasses (name) (case name (binary-input-stream '(binary-stream input-stream)) (binary-io-stream '(binary-input-stream binary-output-stream)) (binary-output-stream '(binary-stream output-stream)) (binary-stream '(stream)) (input-stream '(stream)) (output-stream '(stream)) (standard-object '(t)) (stream '(standard-object)) (t '()))) (defun partial-class-precedence-list (name) (loop for class = name then (pop pending) until (null class) unless (member class result) collect class into result and append (direct-superclasses class) into pending finally (return (reverse result)))) (defun class-ordering-constraints (name) (loop for class in (partial-class-precedence-list name) for superclasses = (direct-superclasses class) unless (null superclasses) append (loop for pair on (cons class superclasses) until (null (cdr pair)) collect (list (car pair) (cadr pair))))) (class-ordering-constraints 'binary-io-stream)
Raw
Annotate
Repaste
Edit