From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?=) Date: 2010-12-07T00:00:50+09:00 Subject: [ruby-dev:42700] Re: Enumerable#categorize けいじゅ@いしつかです. ruby-talkではすでに告知されているのですが, fairy(http://code.google.com/p/fairy-prj/)のオープン化の告知もかねて... In [ruby-dev:42698] the message: "[ruby-dev:42698] Re: Enumerable#categorize", on Dec/06 22:58(JST) Tanaka Akira writes: >とりあえず、まつもとさんのアイデアによって、仕様は変化しているので、 >意見は [ruby-dev:42659] について述べていただけるとありがたいです。 >そこでは「後処理」は消えています。 後処理っぽいのありますよね? :opを指定するとですが... fairyでは, inject_byというのを導入したいと考えているのですが, これが, : op付のcategoraizeに機能的には似ているのかも? と思いました. fairyのinject_byは, Rubyに置き換えると, group_byして, そのグループごと にinjectするものです. inject_byの'by'の部分にグループ毎にという意味を 込めた名前です. categoraizeとの違いは, :op相当が必須ということと, 入力のenumerableの要 素を配列を前提としていないところです. こういったものを導入したいと思った経緯は, MapReduceでは, map-shuffle-reduce とフェーズがあるわけですが, shuffle-reduce部分は, 個々のパーティションごとにreduce処理することが多く, それって, まさに inject_by相当だと考えたことと, MapReduceでは最適化のために前処理として combinerを用いることが多いのですが, inject_byを用いると, あまり論理的 には美しくないcombinerを表に出すことなく最適化が実現できるからです. __ ---------------------------------------------------->> 石塚 圭樹 <<--- ---------------------------------->> e-mail: keiju@ishitsuka.com <<---