list.foldRight和list.reverse.foldLeft一样吗?

时间:2014-02-09 18:11:11

标签: scala functional-programming

我觉得list.foldRight与list.reverse.foldLeft相同,但我不太确定。

有人可以确认他们给出相同的结果或解释他们为何不相等。

PS:我知道交换性是foldRight和foldLeft之间的关键区别。因此,例如,当使用矩阵乘法作为组合子折叠矩阵列表时,结果矩阵通常将取决于我们使用foldRight或foldLeft的天气。

1 个答案:

答案 0 :(得分:4)

查看foldRight scala.collection.immutable.List的定义,foldRight如果指定的reverse.foldLeft是可交换的且列表不为空,则与op相同;否则,没有。

override def foldRight[B](z: B)(op: (A, B) => B): B =
reverse.foldLeft(z)((right, left) => op(left, right))