Говорить, что он поддерживает «циркулярные списки», немного. Вы можете создавать все виды циклических структур данных в Lisp. Как во многих языках программирования. В этом отношении нет особого интереса к Lisp. Возьмите свою типичную книгу «Алгоритмы и данные» и внедрите любую круговую структуру данных: графики, кольца ... Что предлагает некоторые Lisp, так это то, что можно печатать и читать круговые структуры данных. Поддержка этого заключается в том, что в типичных областях программирования Lisp круговые структуры данных являются общими: парсерами, реляционными выражениями, сетями слов, планами, ...
Общепринято, что структуры данных содержат циклы. Реальные «круговые списки» часто используются не так. Например, подумайте о планировщике задач, который запускает задачу и через некоторое время переключается на следующую. Список задач может быть круглым, так что после «последней» задачи планировщик берет «первую» задачу. На самом деле нет «последнего» и «первого» - это всего лишь круговой список задач, и планировщик запускает их без конца. Вы также можете иметь список окон в оконной системе, а с помощью некоторой ключевой команды вы переключитесь на следующее окно. Список окон может быть круглым.
Списки полезны, когда вам нужна дешевая следующая операция, и размер структуры данных неизвестен заранее. Вы всегда можете добавить еще один узел в список или удалить узел из списка. Обычные реализации списков делают получение следующего узла и добавление/удаление товара дешевым. Получение следующего элемента из массива также относительно просто (увеличение индекса, при последнем индексе перейдите к первому индексу), но добавление/удаление элементов обычно требует более дорогостоящих операций сдвига.
Также, поскольку легко создавать круговые структуры данных, можно просто сделать это во время интерактивного программирования. Если вы затем распечатаете круговую структуру данных со встроенными подпрограммами, было бы неплохо, если бы принтер мог ее обработать, так как в противном случае она может печатать круглый список навсегда ...
Теперь я узнал, что для модели окружения Схемы требуются (слишком сильные?) Круговые списки: процедура, назначенная в среде «указывает» на ее окружение - круговой список. – philcolbourn