So führen Sie den Metacircular Evaluator in DrRacket aus

8

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:

%Vor%

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?

    
Joshua Aresty 24.08.2011, 07:09
quelle

3 Antworten

7

Sie könnten einfach die Funktion umbenennen, die SICP apply zu metacircular-apply oder etwas ähnliches aufruft. Es muss nicht anders als Ästhetik genannt werden.

    
Fred Foo 24.08.2011, 07:21
quelle
1

Ich benutze den folgenden Header, der umbenannt wird, gilt für das Apply-in-Underlying-Schema:

%Vor%     
Beef 26.08.2011 10:55
quelle
1

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.

%Vor%

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 .

    
Krysole 21.09.2011 20:25
quelle

Tags und Links