MapReduce、まだやってる。keyは分類済み(同じkeyを持つタプルの値を集めて返す)なのはわかるけど、順序付き(Reduceが実行されるときのkeyの順序は固定)でなくてはならないなのかなあ。Reduceは並行に動きそうだから、順序に意味なさそうな気がするんだけど、まあ、分類するときに順序ついちゃうだろうからなー。
仮にHashで実装したとしたら順序なしなんだけど、こんな風にeachメソッドでのsortは必要なんだろか。
class Mogu def initialize @bag = Hash.new {|h, k| h[k] = Array.new} end def push(k, v) @bag[k].push(v) end def each @bag.keys.sort.each do |key| # ← sortいらね? yield(key, @bag[key]) end end end