[解決済み] foldとreduceの違い?
2022-07-11 13:51:22
質問
F#を学ぼうとしているが、以下のような区別をしようとすると混乱する。 折り畳み と 減らす . Fold は 同じこと を行いますが、余分なパラメータを取ります。この2つの関数が存在する正当な理由があるのでしょうか、それとも異なる背景を持つ人々を収容するために存在するのでしょうか?(例: C# の String と string)
以下はサンプルからコピーしたコードスニペットです。
let sumAList list =
List.reduce (fun acc elem -> acc + elem) list
let sumAFoldingList list =
List.fold (fun acc elem -> acc + elem) 0 list
printfn "Are these two the same? %A "
(sumAList [2; 4; 10] = sumAFoldingList [2; 4; 10])
どのように解決するのですか?
Fold
はアキュムレータの初期値を明示的に取りますが
reduce
は入力リストの最初の要素をアキュムレータの初期値として使用します。
これは、アキュムレータとその結果の型がリスト要素の型と一致しなければならないことを意味します。
fold
ではアキュムレータが別個に提供されるため、異なる場合があります。これはタイプに反映されます。
List.fold : ('State -> 'T -> 'State) -> 'State -> 'T list -> 'State
List.reduce : ('T -> 'T -> 'T) -> 'T list -> 'T
さらに
reduce
は空の入力リストに対して例外を投げます。
関連
-
[解決済み] 関数型プログラミングの「fold」関数に相当する「pythonic」関数は何ですか?
-
[解決済み] クロージャ」と「ラムダ」の違いは何ですか?
-
[解決済み] Scalaのcase classとclassの違いは何ですか?
-
[解決済み】オブジェクトの配列のプロパティを合計するためにreduceを呼び出す方法は?
-
[解決済み】ScalaのfoldLeftとreduceLeftの違いについて
-
[解決済み] 縮小、折りたたみ、スキャン(左/右)?
-
[解決済み] Kotlinのfoldとreduceの違い、いつどちらを使うか?
-
[解決済み】Python 3でfilter, map, reduceを使うには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例