DrRacket中的Foldr和Foldl

Kri*_*son 4 scheme racket

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

(foldl * 1 '(1 2 3 4 5)) == 120
(foldr * 1 '(1 2 3 4 5)) == 120
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚它是如何得到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

Chr*_*ung 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)))).