))) Ruby向けパターンマッチライブラリ「pattern-match」を作った先日ポストしたScalaっぽいパターンマッチをRubyで実装するをベースに 一通り機能を揃えてライブラリ化した(pattern-match)。 面白そうなパターンをいくつか例に取ってみると、まず多重代入。 match([0, [1, 2, 3, 4]]) { with(_[a, _[b, *c, d]]) { # `Array.(a, Array.(b, *c, d))'と同じ p [a, b, c, d] #=> [0, 1, [2, 3], 4] } } Gaucheのutil.match由来の___、__k。 match([[0, 1], [2, 3]]) { with(_[_[a, b], ___]) { p [a, b] #=> [[0, 2], [1, 3]] } } 赤黒木のbalance(参考