SICP раздел 4.1.6 - PullRequest
       17

SICP раздел 4.1.6

1 голос
/ 09 июня 2009

Мне нужна помощь в понимании материала в разделе 4.1.6 SICP о внутренних определениях.

Я понимаю проблему, возникающую при определении взаимно рекурсивных функций. Но я не понимаю, как это решается путем преобразования следующего лямбда-выражения

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

в

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

Может ли кто-нибудь помочь мне здесь? Благодарю.

1 Ответ

3 голосов
/ 09 июня 2009

Если <e1> пытается сослаться на v в первой форме, произойдет сбой - v не определено (не пока , но часть не является важный) Но во второй форме v - это , определяемое к тому времени, когда вы доберетесь до <e1> (хотя еще не назначено - но это нормально! ).

...