【发布时间】:2019-02-02 06:30:42
【问题描述】:
根据我对 Haskell 中折叠的了解,foldl (-) 0 [1..5] 通过计算 0-1-2-3-4-5 得到 -15 的结果,foldr (-) 0 [1..5] 通过计算 5-4-3-2-1-0 得到 -5 的结果。那为什么foldl (++) "" ["a", "b", "c"]和foldr (++) "" ["a", "b", "c"]都给出"abc"的结果,而foldr的结果却不是"cba"?
在理解foldl 和foldr 之间的区别时,我是否遗漏了什么?
【问题讨论】:
-
foldr (%) d [a,b,c] = a % (b % (c % d)),而foldl (%) d [a,b,c] = ((a % b) % c) % d。
标签: haskell functional-programming fold binary-operators associativity