Список foldRight Всегда Использует foldLeft?
Я только что посмотрел наList.scalaВ реализацииfoldRight()
.
override def reverse: List[A] = {
var result: List[A] = Nil
var these = this
while (!these.isEmpty) {
result = these.head :: result
these = these.tail
}
result
}
override def foldRight[B](z: B)(op: (A, B) => B): B =
reverse.foldLeft(z)((right, left) => op(left, right))
Как я понимаю, звонюfoldRight
наList
результаты в вызовеtheList.reverse.foldLeft(...)
.
ЯвляетсяList.foldRight
реализовано сfoldLeft
чтобы использовать один кадр стека вместо использования нескольких кадров стека сfoldLeft
?