爲什麼在下一個代碼中,當我們在正常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