11 votes

Champ d'application lexical vs dynamique en termes de modèle d'évaluation de l'environnement de la SICP

Sur Section 3.2.2 de SICP l'exécution du morceau de code suivant

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

est expliqué en termes de ce schéma .

Chaque fois qu'une fonction est appliquée, un nouveau cadre est créé (étiqueté par E1 par le biais de E4 ) qui représente un ensemble de liaisons entre des symboles et des valeurs. Lorsqu'un symbole n'est pas lié dans un cadre, l'environnement englobant de ce cadre est interrogé pour trouver une liaison de ce symbole particulier.

Ce qui est intéressant dans ce diagramme, c'est que tous les cadres étiquetés par E est contenue dans l'environnement global. Le texte explique que cela est dû au fait que les fonctions ont été définies dans l'environnement global, mais ne s'étend pas sur la question :

Remarquez que chaque cadre créé par square pointe vers l'environnement global, puisque c'est l'environnement indiqué par la balise square objet de la procédure.

Si, au lieu de cela, les cadres étaient contenus dans l'environnement dans lequel la fonction a été appelée, par exemple E3 était contenu dans E2 qui, à son tour, était contenu dans E1 Est-ce que ce serait un modèle valable de fonctionnement d'un langage à portée dynamique ? De plus, la façon dont les cadres dans le diagramme ont le même environnement 'parent' est due au fait que Scheme est lexical scoped ?

6voto

itsbruce Points 2598

La réponse à ces deux questions est oui . Ce chapitre de SICP explique la portée lexicale sans utiliser le terme. Modifier le mécanisme d'évaluation comme vous le décrivez créerait un modèle à portée dynamique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X