В Common Lisp, как я могу переопределить стандартное строковое представление CLOS-класса, чтобы вызовы format
или princ
печатали что-то понятное, даже если объекты этого класса встроены в другие типы, такие как как списки или массивы?
Например, если я вызываю (format t "~a~%" x)
, когда x содержит экземпляр моего класса решения, я хочу, чтобы он печатал что-то вроде #<SOLUTION genes: #(1 2 3) scores: #(4 5) rank: 6>
вместо #<SOLUTION {BB7CD31}>
.
До сих пор все, что мне удалось выяснить, это писать пользовательские функции для обработки печатных структур, которые, как я знаю, будут содержать экземпляры этого класса, но это утомительно. Конечно, Lisp предоставляет какой-либо способ бесплатно получить эту функциональность?