Pregunta

Necesito un poco de ayuda en la comprensión de la materia en la sección de SICP 4.1.6 sobre las definiciones internas.

entiendo el problema planteado cuando se definen funciones mutuamente recursivos. Pero yo no entiendo cómo se resuelve mediante la transformación de la siguiente expresión lambda

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

en

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

Puede alguien ayudarme aquí? Gracias.

¿Fue útil?

Solución

Si intenta <e1> referencia a v en la primera forma, se produce un error - v no está definido (no sin embargo , pero el no es la parte importante). Sin embargo, en la segunda forma, v es definido en el momento en que llegue a <e1> (aunque aún no asignado - pero eso está bien! -) .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top