我需要在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 >))

有人可以帮助我在这里?谢谢。

有帮助吗?

解决方案

如果<e1>尝试参照在第一形式v,它失败 - 没有定义v(未尚未,但在部分是重要的)。但在第二个形式,v 定义的由你来<e1>时间(虽然还没有的分配的 - 但没关系 - !)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top