Pergunta
Preciso de ajuda para entender o material na seção 4.1.6 da SICP em definições internas.
Entendo o problema levantado quando as funções mutuamente recursivas são definidas. Mas eu não entendo como é resolvido transformando a seguinte expressão lambda
(lambda <vars >
(define u <e1 >)
(define v <e2 >)
<e3 >)
em:
(lambda <vars >
(let ((u ’*unassigned*)
(v ’*unassigned*))
(set! u <e1 >)
(set! v <e2 >)
<e3 >))
Alguém pode me ajudar aqui? Obrigado.
Solução
Se <e1>
tenta se referir a v
Na primeira forma, falha - v
não é definido (não ainda, mas o não parte é a importante). Mas na segunda forma, v
é definiram Quando você chegar a <e1>
(embora ainda não atribuído -mas tudo bem!-).
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow