Vas*_*aka 6 scheme sicp racket r5rs
除了质疑SICP中练习1.6的解释是什么?.所以,Racket博士(R5RS)在有限时间内用"if"评估sqrt-iter函数,清楚地显示正常的订单评估.但是,如果我使用练习1.5的例子
(define (p) (p))
(define (test x y)
(if (= x 0)
0
y))
(test 0 (p))
Run Code Online (Sandbox Code Playgroud)
它进入无限循环,使我认为"如果"使用应用程序订单评估.那我在哪里错了?
Ósc*_*pez 10
发生的事情是if永远不会达到:正是因为评估的适用顺序,在实际调用之前test得到评估的两个参数,表达式将永远循环.test(p)
如果使用正常顺序评估相同的过程,它将返回零,这就是本示例首先尝试演示的内容.