Ich arbeite mit einem Schema-Programm und habe ein Problem beim Versuch, meine Sortierfunktion zu nutzen. Ich habe es geschrieben, um 2 andere Hilfsfunktionen zu verwenden, die ich getestet habe und bestätigen kann, wie beabsichtigt, aber beim Sortieren erhalte ich die richtige Liste mit einem #! Unspezifischen Objekt, das daran angehängt ist. Ich bin mir nicht sicher, wie dieses Objekt erstellt wurde oder wie dieser Nebeneffekt vermieden werden kann.Schema #! Unspezifisches Objekt erscheint nach dem Sortieren
Der Code für die Funktionen ist wie folgt:
(define sort
(lambda (roster)
(if (not (null? roster))
(cons (smallest roster (car roster)) (sort (remove roster (smallest roster (car roster)))))
)
)
)
(define smallest
(lambda (roster item)
(cond
((null? roster) item)
((< (string->number (car (car roster))) (string->number (car item))) (smallest (cdr roster) (car roster)))
(else (smallest (cdr roster) item))
)
)
)
(define remove
(lambda (roster record)
(cond
((null? roster) '())
((equal? (car roster) record) (cdr roster))
(else (cons (car roster) (remove (cdr roster) record)))
)
)
)
Wenn ich die Sortierfunktion mit einer Test Roster anrufe, bekomme ich folgendes Ergebnis:
(("1" "Anon" "89") ("2" "Student" "90") ("3" "Test" "78") . #!unspecific)
Danke, invertierte die Bedingung, wie Sie sagten und fügte eine else Klausel hinzu, die eine leere Liste zurückbringt. Funktioniert jetzt großartig! –