タグ

2014年9月14日のブックマーク (1件)

  • 畳込関数fold:foldrとfoldlの違い (あるいはfold_right, fold_left) - 一歩前進

    畳込関数fold リストに関する処理は、以下のようなパターンで処理することが多いです。 f [] = v f (x:xs) = x ● f xs 上記は関数fにリストを与えた時、次のような処理を行います。 リストが空の場合:値vが返される リストが空でない場合:先頭要素xと関数fを残りのリストxsに適用した結果に対して、何らかの演算●を適用したものが返される このようなパターンを簡潔に記述するために畳み込み(fold)と呼ばれる関数を使うことが出来ます。1 例として、合計を取るsum関数の通常版とfold版を示します。ソースコードはHaskellです。 sumの通常版 sum [] = 0 sum (x:xs) = x + sum xs sumのfold版 sum = foldr (+) 0 foldは次の入力を受け取り、出力を返します。 入力: 2引数関数 アキュムレータの初期値 畳み込

    畳込関数fold:foldrとfoldlの違い (あるいはfold_right, fold_left) - 一歩前進