タグ

ブックマーク / qiita.com/egisatoshi (1)

  • RubyにHaskellよりも強力なパターンマッチを実装した - Qiita

    require 'egison' include Egison match_all(object) do with(pattern) do ... end end match(object) do with(pattern) do ... end with(pattern) do ... end ... end パターンマッチに成功すると、withに渡されたブロックが実行され、その結果が返されます。 このライブラリのパターンマッチでは、パターンマッチの結果が複数あるということがあります。 match_all構文はそのすべてのパターンマッチの結果それぞれについてwithに渡されたブロックを実行し、すべての結果をまとめた配列を返します。 match_all構文は1つのwith節を取ります。 一方、matchは複数のwith節を取ります。 先頭のwith節のパターンから順番にパターンマッチに成功

    RubyにHaskellよりも強力なパターンマッチを実装した - Qiita
    kirakking
    kirakking 2014/05/28
    Set および Multi Set に対するACマッチングは羨ましい。ruby はよう知らんけんど、object は常に normal form なのだろうか。例えば f(x) = y のとき match ( [ f(x), y ]) do with (List.[ _a, _a )) ... は正しくマッチするのだろうか。
  • 1