Rubyでパターンマッチが使えるライブラリを作ってみた。

Rubyには、配列などから値を取り出したりするパターンマッチの機能はありません。
しかし、時々欲しいと思うことがあります。そんな時のために作ってみました。
(実は自分でもなんで作ったんだろうと思うような時もあるのですが)
githubで公開しています。https://github.com/tana/ruby-pattern-match

使い方

match.rbをrequireなどで読み込んだら、

match [1, 2, 3] do
  pat [:a, :b, :c] do
    a + b + c
  end
end

のように使えます。
条件分岐でマッチするかしないかを分ける場合、

match [1, 2] do
  pat [:a, :b], cond { b == 2 } do
    a
  end
end

のように、condをパターンの後に付ければ条件を付けることができます。
配列だけではなくStructにも、

Aaaaa = Struct.new(:a, :b)
match Aaaaa[1, 2] do
  pat Aaaaa[:a, :b] do
    a + b
  end
end

のように、値を取り出すことができます。
その他にもいろいろな機能がありますが、test.rbにはいくつか例が書いてあります。