Ich versuche, das in SICP 4.1 beschriebene Programm auszuführen (http://mitpress.mit.edu/sicp/full-text/book/book-ZH-26.html), habe aber Schwierigkeiten bei der Neudefinition die Funktion apply
, wie es das Buch vorschlägt. Der Code ist der folgende:
Das Problem ist der Anfang, wo ich versuche, das eingebaute Schema als "anwendungsbasiertes Schema" zu speichern. Da unten eine andere Funktion namens "apply" existiert, bekomme ich den Fehler "Verweis auf einen Bezeichner vor seiner Definition: apply". Wie kann ich das eingebaute "apply" referenzieren, ohne hier einen Fehler zu verursachen?
Obwohl Sie eine Definition in der Racket-Sprache #lang racket
oder ähnlich nicht neu definieren können, können Sie die require-Funktion des Racket-Modulsystems verwenden.
Hier bedeutet only-in
, dass nur die von uns spezifizierten Bindungen geladen werden, hier ist apply
von dem eingebauten Modul racket
.
Wir könnten auch rename-in
anstelle von only-in
verwenden, aber da das racket
Modul immer als Teil der Racket-Sprache geladen wird, müssen wir nicht alles neu importieren und verwenden einfach only-in
.