SICP 問題1.7
(define (sqrt-iter guess x) (new-if (good-enough? guess x) guess (sqrt-iter (improve guess x) x)))
を動かすと値が返ってこない.new-ifは通常の手続きであるので作用的順序の評価に従って引数がまず評価される.
そのため(sqrt-iter (improve guess x) x)が評価され続けるループに入っている.
(define (sqrt-iter guess x) (new-if (good-enough? guess x) guess (sqrt-iter (improve guess x) x)))
を動かすと値が返ってこない.new-ifは通常の手続きであるので作用的順序の評価に従って引数がまず評価される.
そのため(sqrt-iter (improve guess x) x)が評価され続けるループに入っている.