タグ

pattern-matchingに関するtyruのブックマーク (3)

  • 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に

    Rubyでパターンマッチが使えるライブラリを作ってみた。 - 自称スーパーハッカーの適当なプログラミング雑記等
  • 新しいswitch statementのご案内 - デ-mk6

    前に http://ideone.com/7NnRj というのを書いて、その後パターンマッチとかできればうれしいなーと思ったので、そんなものを書いた。書いてるうちにぼくのかんがえたさいきょうのぱたーんまっち。という記事が先に上がってたのでこれお蔵入りかなーとか思ったけど、せっかくtraitsで拡張できるようにしたんだし公開しよう、そうしよう、というわけで公開します。ほげー 実際のところはパターンマッチというか、boost::variantっぽいものから中に入っているオブジェクトを取り出そうと試みて、取り出せなかったら次の節を試して、取り出せたらそのオブジェクトをtieで初期化させろみたいにバラす、というのを同時にやるものです。query, unwrap, unpackというtraitsがあって、説明は省略(うまくできない)。まぁcpp -E -Pでもしたあと適当に改行とか入れて読んでくださ

    新しいswitch statementのご案内 - デ-mk6
  • JavaScript の分割代入まとめ - mooz deceives you

    幻の ECMAScript 4th 幻となった ECMAScript 4th のドラフトを眺めていたところ, p.33 に Destructuring assignment and binding (分割代入, 分割束縛) という項目を発見した. 分割代入に関しては JavaScript 1.7 (Firefox などが用いる SpiderMonkey や Rhino に実装済み) から使用が可能であるため, ご存知の方も多いのではないかと思う. 「そういえば詳しい仕様は見たことがなかったな」と軽い気持ちで読み進めていたところ, そこに述べられていることが Haskell や OCaml など関数型言語におけるパターンマッチと同等であると分かり, 驚いた. 例えば, 分割代入においては次のように deep なパターンが利用可能であると書かれている. let { x: {a, b}, y:

  • 1