我觉得list.foldRight与list.reverse.foldLeft相同,但我不太确定。
有人可以确认他们给出相同的结果或解释他们为何不相等。
PS:我知道交换性是foldRight和foldLeft之间的关键区别。因此,例如,当使用矩阵乘法作为组合子折叠矩阵列表时,结果矩阵通常将取决于我们使用foldRight或foldLeft的天气。
答案 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))