Für den Code unten kann ich nicht verstehen, wie die Bindungen (x, y, z) auftreten. Bitte überprüfen Sie den Code aus, ich werde mein Problem im Folgenden näher erläutern:Benötigen Sie Hilfe beim Verständnis von Bindungen in Schema Code
(define (w x)
(lambda (y z)
(begin
(set! x (+ (* y x) z)) x)))
(define f1 (w 3))
(f1 4 2)
(f1 2 1)
Der Ausgang 14, 29. Diese sind Werte für x.
Dies bedeutet zunächst, x = 3, y = 4, z = 2. Im zweiten Aufruf, d. H. (F1 2 1), ist x = 14, y = 2, z = 1.
Meine Zweifel:
Wie funktioniert die Bindung zuerst auftreten, warum ist x = 3, y 4 = und z = 2? Wenn es mit Lambda-Ausdruck in der Funktion zu tun hat, bitte erläutern Sie, wie es funktioniert .. Ich habe das Gefühl, das ist, wo mein Verständnis bricht.
Als nächstes, warum ist die erste Antwort von x = 14 beibehalten im zweiten Aufruf, dh (f1 2 1)?
Danke für in diese suchen :)
danke erjiang. Wie wird das "interne" x erstellt? – Roy
Nun, die einfache Antwort ist, dass es von 'Lambda' erstellt wurde. Sobald das "Lambda" ausgeführt wird, wird die Funktion von Scheme in einen internen Abschluss (Code + Umgebung) konvertiert, den Sie wahrscheinlich nicht sehen können. – erjiang
das verwirrt mich immer noch. Wie steuern Sie, wie viele Variablen von Ihrem internen Lambda-Ausdruck erstellt werden? – Roy