Hi!
Du kannst eine Liste in eine Ringstruktur überführen, indem zu du z.B. den Cdr-Teil des letzten Elements der Liste auf ein in Liste weiter vorne befindliches Element verweisen lässt.
Bsp.:
(define liste (list 1 2 3))
(set-cdr! (cddr liste) liste)
Diese Liste hat vom letzten Element wieder einen Verweis auf das Erste.
Im aktuellen Aufgabenblatt der Prog1-Vorlesung ist auch eine test-Prozedur definiert, um festzustellen, ob die vorliegende Strukur eine solche Ringstrukur ist.
Mir fiel aber auf, dass die "print"-Routine meines Schemes eine solche Struktur scheinbar erkennt und bei Ausgabe der oben definierten "liste" folgendes liefert:
#0=(1 2 3 . #0#)
und somit eine Endlosausgabe umgeht
Meine Erklärung ist, dass Herr Parchmann in der Vorlesung seine eigene und simplere (also ohne Fehlererkennung ausgestattete) Ausgaberoutine nutzte!!
Hoffentlich konnte ich helfen!
cg