問題1.20

僕の解答

正規順序でも、作用的順序でもremainder演算の回数は変わらず、かな。

; 正規順序
(gcd 206 40)
(gcd 40 (remainder 206 40))
; ↓1回目(ifで評価)
(gcd 6 (remainder 40 6))
; ↓2回目(ifで評価)
(gcd 4 (remainder 6 4))
; ↓3回目(ifで評価)
(gcd 2 (remainder 4 2))
; ↓4回目(ifで評価)
2

; 作用的順序
(gcd 206 40)
(gcd 40 (remainder 206 40))
; ↓1回目
(gcd 40 6)
(gcd 6 (remainder 40 6))
; ↓2回目
(gcd 6 4)
(gcd 4 (remainder 6 4))
; ↓3回目
(gcd 4 2)
(gcd 2 (remainder 4 2))
; ↓4回目
(gcd 2 0)
2

所感

大間違い…orz。
ifで評価されたんだから、同じ演算は同じ値を使うもんだと思ってた。
とことん遅延するのかぁ…って、同じ演算でもそうするのかなぁ?