2012-10-04 2 views

Répondre

3

D'abord, notez que la let est macro-étendue à ce qui suit:

((lambda (a) 
    (a 4)) 
(lambda (x) 
    (+ 1 x))) 

Donc, maintenant, nous allons CPS-transformons ci-dessus, et nous obtenons:

((lambda (a k) 
    (a 4 k)) 
(lambda (x k) 
    (+ 1 x k)) 
k) 

où le k sur la dernière ligne est la continuation de vos utilisations let d'origine.

Si tous ces k s regardent trop confus, voici le même code:

((lambda (a k1) 
    (a 4 k1)) 
(lambda (x k2) 
    (+ 1 x k2)) 
k0) 

où le k0 est la continuation d'origine.

Dans les deux cas, je suppose que + est CPS-transformé aussi à leur tour prendre une suite pour passer le résultat de l'addition de ....

+0

Thanks.It aide vraiment. – user1657564

Questions connexes