为什么在下一个代码中,当我们在正常eval(懒惰的一个)上工作时什么也不显示。计划 - 打印到屏幕 - 正常eval
;;; [Number, Number -> Number]
(define (printing-sub x y)
(display x)
(- x y))
;;; [Number, Number -> Number]
(define (f a b)
(if (< a 0)
a
(f b (printing-sub b a))))
(f 0 0)
我exmplain:在第一次迭代中,我们将得到(f 0 (printing-sub 0 0))
,在第二:(f (prining-sub 0 0) (prining sub (printing sub 0 0) 0).
现在,在第三,我们要计算(printing-sub 0 0)
,因为我们想知道(if (<a 0)
。在这个迭代中,0会打印出来。
我缺少什么?
谢谢。
任何其他你所用“正常的eval(懒惰的)”的意思是?你是否在用'#懒惰“来使用球拍? – 2011-04-25 10:25:29
@Eli Barzilay:我的意思是正常顺序:en.wikipedia.org/wiki/Evaluation_strategy#Normal_order – Tom 2011-04-26 20:10:46
我知道“正常顺序”是什么意思,但目前还不清楚你要实际做什么。你是否正在使用一些懒惰的评估器的现有实现,或者你是否实现了自己的,或者你没有使用任何东西,只是猜测它应该做什么? – 2011-04-27 18:49:26