6
一個必須決定的基礎上的值:DrRacket解釋器是否使用基於SICP練習1.5的正常順序評估?
(試驗0(P))
其中測試被定義爲:
(define (test x y)
(if (= x 0)
0
y))
和p被定義爲:
(define (p) (p))
當我評估(test 0 (p))
在詮釋者進入無限循環,暗示它正在評估p
。這顯示了正常順序評估,因爲操作數在替換參數之前被評估。 SICP表示LISP使用應用程序評估。
從文中後面的一個有用的提示:它被稱爲「應用順序」的原因是操作數在操作符應用**之前被評估。關於第三章中的「懶惰」評估等問題,我們有更多的討論,在讀完之前我絕對不能保持這兩種觀點,他們真的應該早於第4章對它進行解釋。 – spacemanaki 2010-12-14 15:03:54