Ich versuche, eine Liste in Schema zu umkehren und ich kam mit der folgenden Lösung:Reverse-Liste in Schema
(define l (list 1 2 3 4))
(define (reverse lista)
(car (cons (reverse (cdr (cons 0 lista))) 0)))
(display (reverse l))
Obwohl es funktioniert verstehe ich nicht wirklich, warum es funktioniert.
In meinem Kopf würde es zu einer Reihe von verschachtelten Nachteile bis Nachteile von() (was die Cdr einer Liste mit einem Element) bewerten.
Ich glaube, ich verstehe das Substitutionsmodell nicht, könnte mir jemand erklären, warum es funktioniert?
Obs:
Es soll nur Listen nicht verschachtelt arbeiten.
In Form von SICP, Übung 2.18.
Ich weiß, dass es viele ähnliche Fragen gibt, aber soweit ich gesehen habe, präsentierte keiner diese Lösung .
Danke
bist du sicher? der Code, den du zeigst, funktioniert offensichtlich nicht, und aus gutem Grund - "(cdr (cons 0 lista))" wird zu "lista" ausgewertet, also endlos. Eine rekursive Definition muss den Basisfall haben und in jedem Schritt darauf testen. Ihre Prozedur hat es nicht, es kommt immer wieder vor. Die einzige Möglichkeit, wie ich diese Sache sehen kann, besteht darin, stattdessen eine eingebaute Reverse hervorzurufen, also hattest du vielleicht einen Tippfehler bei der Definition? – dercz
Danke, ich wusste nicht über die eingebaute Rückseite. Ich verwende es anstelle meiner definierten Prozedur, wenn ich den Namen ändere, funktioniert es wirklich nicht. Entschuldigung für diese Frage. –
Kein Problem! Jeder, den ich kenne, lispelte, machte ähnliche Fehler (mich eingeschlossen). Ich beschloss, die Antwort trotzdem zu schreiben. Viel Glück und happy hacking, ich hoffe, Sie genießen Intrigen! – dercz