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.

Foi útil?

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
scroll top