sicp第4.1.6节

时间:2009-06-09 16:14:40

标签: text sicp

我需要一些帮助来理解SICP关于内部定义的4.1.6节中的材料。

我理解定义相互递归函数时引发的问题。但我不明白如何通过转换以下lambda表达式来解决它

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

成:

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

有人可以帮助我吗?谢谢。

1 个答案:

答案 0 :(得分:3)

如果<e1>尝试在第一个表单中引用v,则会失败 - v未定义(尚未,但部分是重要的一部分)。但是在第二种形式中,到v时,<e1> 已定义(虽然尚未已分配 - 但没关系! - )。