DrRacket中的Foldr和Foldl

时间:2016-04-30 20:52:27

标签: scheme racket

我可以看到它是如何做到的

errors

但我无法弄清楚它是如何得到2的      (foldl - 1'(1 2 3 4 5))== 2

我认为(foldl - 1'(1 2 3 4 5))将是((((1-1)-2)-3)-4)-5),一个负数。我错过了什么?

我能看出原因     (foldl + 1'(1 2 3 4 5))== 16

1 个答案:

答案 0 :(得分:6)

(foldl - 1 '(1 2 3 4 5))实际上等同于(- 5 (- 4 (- 3 (- 2 (- 1 1))))),或者在中缀中,5 - (4 - (3 - (2 - (1 - 1))))

同样,(foldr - 1 '(1 2 3 4 5))实际上等同于(- 1 (- 2 (- 3 (- 4 (- 5 1))))),或者在中缀中,1 - (2 - (3 - (4 - (5 - 1))))