У меня есть очень простая структура данных, я определил в Лиспе:печати defstruct в Лиспе
;;Data structure for a person
(defstruct person
(name nil)
(age 0)
(siblings nil :type list)) ;; Siblings is a list of person objects
Я тогда procede инстанцировать несколько человеко объектов:
(setf person-a (make-person :name 'Tim :age 23))
(setf person-b (make-person :name 'Sally :age 21))
(setf person-c (make-person :name 'Louis :age 24))
Я тогда соотносить брат и сестра (предположим, что они все братья и сестры друг друга):
(setf (person-siblings person-a) (list person-b person-c))
(setf (person-siblings person-b) (list person-a person-c))
(setf (person-siblings person-c) (list person-b person-a))
Как я могу затем распечатать информацию об объектах, которые Я создал и модифицировал? Я рассмотрел варианты defstruct относительно объекта print и print-function, но я не могу понять, как правильно печатать мои объекты. Используя что-то вроде:
(print person-a)
отправляет мой интерпретатор ACL в бесконечный цикл.
Это очень полезно. У меня есть вопросы о вашем форматировании. Можете ли вы объяснить три строки форматирования? Мне также любопытно, почему каждый объект объекта печатает дважды. – Isthan
форма (формат nil «...» ...) печатает на консоль, подобную тому, как печатаются и принц. формат является общим эквивалентом printf/sprintf lisp. Мой код печатает каждого человека с форматом, а затем снова с печатью, чтобы показать, что печать рекурсивной структуры завершается успешно. –