我执行以下foldl
操作
foldl (fn (acc,y) => if acc>y then acc else y+1) 0 [1,3]
所以,我希望这会产生4
的结果,但它会产生3
的输出。我错过了什么?
我的踪迹是这样的:
acc: 0 y: 1
acc: 2 y: 3
并且因为acc> y,即2> 3它应该进入else分支并返回4(3 + 1)。
答案 0 :(得分:3)
答案 1 :(得分:2)
进展:
fn(0,1) => not(0>1) = 1+1 = 2: new acc
fn(3,2) => is(3>2) = 3: new acc
fn([],3) => 3: final answer
foldl立即计算一个新值,foldr只有在达到[]后才开始返回一个值。