foldLeftはほとんどの操作ではるかに効率的だと聞きましたが、Scala School(Twitterから)は次の例を示しました。誰かがその効率の分析をすることができますか?foldLeftを使用して同じ操作を達成する必要がありますか?
val numbers = List(1,2,3,4,5,...10)
def ourMap(numbers: List[Int], fn: Int => Int): List[Int] = {
numbers.foldRight(List[Int]()) { (x: Int, xs: List[Int]) =>
fn(x) :: xs
}
}
scala> ourMap(numbers, timesTwo(_))
res0: List[Int] = List(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)