В книге С. Кин Объектно-ориентированное программирование в COMMON LISP она вводит специализацию поведения describe
универсальной функции, предоставляя :after
метод для некоторых классов, но это приведет к ошибке в SBCL и Закрытие:
COMMON-LISP:DESCRIBE already names an ordinary function or a
macro. [Condition of type SB-INT:SIMPLE-PROGRAM-ERROR]
Это происходит, когда я пытаюсь изменить поведение describe
для своего класса:
(defclass klasse ()
())
(defmethod describe :after ((obj klasse))
(print "Klasse!"))
Поскольку книга написана в 1989 году, эти политики блокировки произошли после выхода книги, или я упустил что-то еще?
describe
действительно является обычной функцией, а есть общая функция с именемdescribe-object
. Этот должен подойти, я думаю - person leetwinski   schedule 12.04.2020(defmethod describe-object :after ((obj klasse) stm) (print "Klasse!" stm))
и вызываете его с помощьюdescribe
:(describe (make-instance 'klasse))
. это поможет - person leetwinski   schedule 12.04.2020