【发布时间】:2023-03-30 00:41:01
【问题描述】:
在线课程中指出foldLeft 和foldRight 对于关联和交换的运算符是等价的。
其中一位学生坚持认为此类运算符只需要具有关联性即可。所以这个属性对于像函数组合和矩阵乘法这样的操作应该是正确的。
据我所知,非可交换的关联运算不会为 foldLeft 和 foldRight 产生相同的结果,除非 z 是中性的,并且运算的累积方式使得操作数保持不变。在一般情况下,IMO 操作必须是可交换的。
list.foldLeft(z)(operation) == list.foldRight(z)(operation)
那么,为了使foldLeft 和foldRight 等价,operation 应该同时具有关联性和可交换性,还是 operation 具有关联性就足够了?
【问题讨论】:
标签: scala fold equivalent