Estou escrevendo uma função de inserção para uma lista duplamente vinculada em Common Lisp (sbcl) e definir dois nós para apontarem um para o outro faz com que o resultado seja impresso em um loop infinito. Por que? O que faz com que o nó seja impresso infinitamente? Como posso evitar que um objeto seja impresso dessa maneira?
Aqui está um exemplo mínimo (vars globais usados para manter as coisas simples).
(defstruct node
data
next
prev)
(defparameter *new* (make-node :data "hello"))
(defparameter *original* (make-node :data "world"))
(setf (node-prev *original*) *new*) ;; Prints fine.
(setf (node-next *new*) *original*) ;; INFINITE LOOP WHEN PRINTING!!!