2009-06-09 6 views
1

J'ai besoin d'aide pour comprendre le contenu de la section 4.1.6 du SICP sur les définitions internes.section sicp 4.1.6

Je comprends le problème soulevé lorsque des fonctions mutuellement récursives sont définies. 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.

Répondre

3

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