2012-10-06 13 views
11

En Section 3.2.2 de SICP la ejecución del siguiente fragmento de códigoléxico vs ámbito dinámico en términos del modelo de Medio Ambiente de SICP de Evaluación

(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) 

se explica en términos de este diagrama:

Cada vez que se aplica una función, se crea un nuevo marco (etiquetado por E1 hasta E4) que representa un conjunto de enlaces entre símbolos y valores. Cuando un símbolo no está encuadernado en un marco, se consulta el entorno circundante de ese marco para un enlace de ese símbolo en particular.

Lo interesante de este diagrama es que todos los cuadros etiquetados con E están contenidos en el entorno global. El texto explica que esto se debe a que las funciones se definen en el medio ambiente mundial, pero no entra en detalles sobre el tema:

en cuenta que cada cuadro creado por square puntos para el medio ambiente mundial, ya que este es el ambiente indicado por el objeto de procedimiento square.

Si en lugar de fotogramas cuando se incluya en el ambiente que la función se llama en, por ejemplo E3 estaba contenido en E2 que a su vez estaba contenido en E1, habría que ser un modelo válido de cómo funciona un lenguaje de ámbito dinámico? Además, ¿es la forma en que los cuadros en el diagrama tienen el mismo entorno 'padre' porque Scheme tiene un alcance léxico?

Respuesta

5

La respuesta a ambas preguntas es . Ese capítulo de SICP está explicando el alcance léxico sin utilizar realmente el término. Cambiar el mecanismo de evaluación tal como lo describe crearía un modelo de ámbito dinámico.

Cuestiones relacionadas