タグ

injectに関するelimのブックマーク (2)

  • 畳み込み関数の比較 (fold / accumulate / inject / reduce) - blanket log

    つーか、fold の弱点として、言語によって引数の順番がまちまちで、 正直憶えきれないってのがあるんだよな。誰か対応表とか作ってくれんもんか。 jijixi's diary - fold, map, for-each この中から一つ選ぶとしたらどれ? 確かにいろいろとややこしいのでまとめてみました。 いくつかの言語について大雑把に表にすると次のような感じ。 言語 関数 Haskell, OCaml, Scheme, Erlang foldl* f init items C++ accumulate(begin, end, init, f) Ruby*, JavaScript items.inject(init, f) Python, Perl* reduce(f, items [, init]) 言語 畳み込む二項演算 Scheme(SRFI)*, Erlang f(item, acc)

    畳み込み関数の比較 (fold / accumulate / inject / reduce) - blanket log
  • いげ太のブログ: [F#] fold 関数を知る

    map はすぐにわかった。そして、map がわかってしまえば、filter や find や iter もすぐに理解できた。でも、fold ってのはどうにも意味不明だった。 map 関数の説明はわかりやすい。リストの全要素に関数を適用して新しいリストを作る。大体どんな文献でもこの簡潔な説明を見ることができるし、そこからおおよその機能は想像できるだろう。たとえ、高階関数がどうとか、関数がファーストクラスのオブジェクトだとか、そんなことを知らなくとも。 しかし fold である。調べ始めてまず目に飛び込んでくるのは、fold 関数は「畳み込み」であるという謎の説明だ。全くイマジネーションが働かない。つーか「畳み込み」なんて初耳ですけど、と戸惑うばかりだ。で、そんなときは大抵、どうせ使わないよとバカの壁を発動させるか、あるいは、サンプル コードを見て理解しようということになるのだが、後者を選択し

  • 1