練習1.5。 Ben Bitdiddle發明了一個測試,以確定他所面對的翻譯人員是否正在使用應用程序訂單 評估或正常順序評估。他定義下面的兩個 程序:SICP練習1.5
(定義(P)(P))
(定義(測試XY)(如果(= X 0) Y))
然後,他計算表達式
(測試0(p))
將奔觀察哪些行爲與使用 應用性,爲了評估一個解釋?在使用正常順序評估的解釋器中,他會觀察到什麼行爲?
我明白這個練習的答案;我的問題在於如何解釋(p)與p。例如,(測試0(p))導致解釋器掛起(這是預期的),但具有上述定義的(測試0 p)立即計算爲0.爲什麼?此外,假設我們將定義改爲(define(p)p)。根據給定的定義,(測試0(p))和(測試0 p)都評估爲0.爲什麼會發生這種情況?爲什麼口譯員不掛?我正在使用Dr.Retet和SICP軟件包。
+1簡潔的答案。也請嘗試http://codepad.org。 –
謝謝。我也在尋找答案。 – user1166240