Haskellを使っているとパターンマッチ脳になってしまう。 するとRubyでもパターンマッチが使いたくなる。 Rubyではcase文(Cでいうところのswitch文)は===という演算子を使って場合分けをするというのを思い出して、 class Hoge ... def ===(pattern) ... end ... end case Hogeのインスタンス when パターン ... end とやったのだがどうも上手くいかない。調べてみるとHogeで定義した===演算子が呼ばれていない。 Rubyのリファレンスマニュアルを見ると、「Hogeのインスタンス」の方ではなく「パターン」の方の===演算子が呼ばれるらしい。なので