Decir que es compatible con 'listas circulares' es un poco demasiado. Puede construir todo tipo de estructuras de datos circulares en Lisp. Como en muchos lenguajes de programación. No hay mucho especial sobre Lisp a este respecto. Tome su libro típico 'Algorithms and Datastructure' e implemente cualquier estructura circular de datos: gráficos, anillos, ... Lo que algunos Lisps ofrecen es que uno puede imprimir y leer estructuras de datos circulares. El soporte para esto es porque en los típicos dominios de programación Lisp las estructuras de datos circulares son comunes: analizadores, expresiones relacionales, redes de palabras, planos, ...
Es bastante común que las estructuras de datos contengan ciclos. Las 'listas circulares' reales no son tan usadas. Por ejemplo, piense en un programador de tareas que ejecuta una tarea y luego de un tiempo pasa al siguiente. La lista de tareas puede ser circular para que después de la "última" tarea el planificador tome la "primera" tarea. De hecho, no hay "último" y "primer", es solo una lista circular de tareas y el planificador las ejecuta sin fin. También podría tener una lista de ventanas en un sistema de ventanas y con algunos comandos de tecla cambiaría a la siguiente ventana. La lista de ventanas podría ser circular.
Las listas son útiles cuando necesita una próxima operación barata y el tamaño de la estructura de datos se desconoce de antemano. Siempre puede agregar otro nodo a la lista o eliminar un nodo de una lista. Las implementaciones habituales de listas hacen que obtener el siguiente nodo y agregar/eliminar un elemento sea barato. Obtener el siguiente elemento de una matriz también es relativamente simple (aumentar el índice, en el último índice ir al primer índice), pero agregar/eliminar elementos generalmente requiere operaciones de cambio más costosas.
Además, dado que es fácil construir estructuras de datos circulares, uno podría hacerlo durante la programación interactiva. Si luego imprime una estructura de datos circular con las rutinas incorporadas, sería una buena idea si la impresora puede manejarlo, ya que de lo contrario puede imprimir una lista circular para siempre ...
He aprendido que el modelo de entorno de Scheme requiere (¿demasiado fuerte?) Listas circulares: un procedimiento asignado en un entorno 'puntos' a su entorno: una lista circular. – philcolbourn