Question

J'ai besoin d'aide pour comprendre la matière dans la section 4.1.6 SICP sur les définitions internes.

Je comprends le problème soulevé lors de la définition des fonctions mutuellement récursives. Mais je ne comprends pas comment il est résolu en transformant l'expression lambda suivante

(lambda <vars >
  (define u <e1 >)
  (define v <e2 >)
  <e3 >)

dans:

(lambda <vars >
  (let ((u ’*unassigned*)
        (v ’*unassigned*))
    (set! u <e1 >)
    (set! v <e2 >)
    <e3 >))

Quelqu'un peut-il me aider? Merci.

Était-ce utile?

La solution

Si <e1> tente se référant à v dans la première forme, il échoue - v n'est pas défini (pas encore , mais la partie pas est l'important). Mais dans la deuxième forme, v est défini au moment où vous arrivez à <e1> (mais pas encore assigné - mais c'est ok! -) .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top