タグ

2016年1月23日のブックマーク (1件)

  • 【Scala】foldLeftとfoldRightのしくみ | DevelopersIO

    利用方法はとても簡単で、カリー化された第一引数にアキュームレータの初期値を渡し、第二引数に関数を渡します。 List(1, 2, 3, 4).foldLeft(0) { (acc, x) => acc + x } // -> 10 "abcd".foldRight(Nil : List[Int]) { (x, acc) => x :: acc } // -> List(97, 98, 99, 100) コレクションAPIに定義されているほとんどのメソッドは、 foldLeft か foldRight を用いて実装することができます。上記の foldLeft のコード例などは、 sum (総和) 関数そのものですね。 さて、それぞれの特徴を比較すると真っ先に目につくのが、foldLeft はスタックセーフな高階関数で、foldRight はそうではない、という点だと思います。それじゃあ、 f

    【Scala】foldLeftとfoldRightのしくみ | DevelopersIO