質問に加えて、SICP の演習 1.6 の説明は何ですか? . Dr. Racket (R5RS) は sqrt-iter 関数を "if" 付きで有限時間で評価し、正常な順序評価を明確に示しています。しかし、演習1.5の例を使用すると
(define (p) (p))
(define (test x y)
(if (= x 0)
0
y))
(test 0 (p))
無限ループに入り、「if」が適用可能な順序評価を使用していると思わせます。どこが間違っているのですか?