Lexikalisches vs. dynamisches Scoping im Sinne des SICP-Bewertungsumfeldmodells

ImAbschnitt 3.2.2 von SICP die Ausführung des folgenden Teils des Codes

(define (square x)
  (* x x))
(define (sum-of-squares x y)
  (+ (square x) (square y)))
(define (f a)
  (sum-of-squares (+ a 1) (* a 2)))

(f 5)

wird erklärt in Bezug aufdieses Diagramm.

Jedes Mal, wenn eine Funktion angewendet wird, wird ein neuer Rahmen erstellt (mit gekennzeichnet)E1 durchE4), die eine Reihe von Bindungen zwischen Symbolen und Werten darstellt. Wenn ein Symbol nicht in einem Rahmen gebunden ist, wird die umgebende Umgebung dieses Rahmens nach einer Bindung dieses bestimmten Symbols abgefragt.

Das Interessante an diesem Diagramm ist, dass alle Frames mit gekennzeichnet sindE ist in der globalen Umgebung enthalten. Im Text wird erklärt, dass dies darauf zurückzuführen ist, dass die Funktionen in der globalen Umgebung definiert wurden, das Problem jedoch nicht näher erläutert wird:

Beachten Sie, dass jeder Frame von erstellt wurdesquare verweist auf die globale Umgebung, da dies die durch das Symbol angegebene Umgebung istsquare Verfahrensobjekt.

Wenn stattdessen Frames in der Umgebung enthalten sind, in der die Funktion aufgerufen wurde, sagen wirE3 war enthalten inE2 was wiederum enthalten war inE1Wäre das ein gültiges Modell für die Funktionsweise einer Sprache mit dynamischem Gültigkeitsbereich? Ist die Art und Weise, in der die Frames im Diagramm dieselbe übergeordnete Umgebung haben, auch lexikalisch?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage