パターンマッチはかっこいい if 文なのか?

分岐しなくてもえらい!しかも分岐のチェック漏れも静的に指摘してくれるよ! 誰もまとめていないようなので作りました。
6
ぐるぐる系SQL @bleis

Haskellは純粋関数型言語を「自称」してるんじゃないですし / “関数型プログラミングとオブジェクト指向 - mizon dev” http://t.co/1jPrSSDv

2011-11-14 09:58:35
SKS rep @repeatedly

誰か反論の記事を書くのかな.このままだとパターンマッチが「かっこいいif文」になる!

2011-11-14 10:29:00
でちまるさん(実際かわいい) @decimalbloat

パターンマッチについての説明は以前のkinabaさんの一連のツイート以上に分かりやすくて伝わりやすい説明しらない

2011-11-14 10:30:35
ぐるぐる系SQL @bleis

"if文やパターンマッチを超越する分岐はオブジェクト指向のポリモーフィズムだろう" えー

2011-11-14 10:34:03
鈴木某 @John_Suzuki_Doe

パターンマッチはかっこいいif文にすぎないけど,プログラミングに対する考え方の違いがそこに出ているってことなのかな?

2011-11-14 10:35:52
ぐるぐる系SQL @bleis

@John_Suzuki_Doe ちがいます。そもそもパターンマッチは分岐を行うためだけのものと言うわけではない

2011-11-14 10:36:59
鈴木某 @John_Suzuki_Doe

RT @chiku2gonzalez: どっちかってーとパターンマッチって型に対するswitchだよねっと。より具体的にはRubyのcase~when

2011-11-14 10:42:06
鈴木某 @John_Suzuki_Doe

今RTした「パターンマッチってクラスに対するswitch(Rubyのcase-when)だろ?」ってのが私のパターンマッチに対する認識だった.違ったのか.

2011-11-14 10:43:17
ぐるぐる系SQL @bleis

@John_Suzuki_Doe 分岐だけに限って話をすると、考慮漏れや絶対に通らないパターンの検出が可能なのでそれだけで単純な分岐とはちがいますよね。それこそそこはOOP的には多態と対応すると言えなくもない。さらに、タプルやレコードのパターンマッチは分岐ではないし。

2011-11-14 10:43:18
SKS rep @repeatedly

switchじゃなくてD言語的なfinal switchならまだ近いけど,パターンへのアクセスとかがないからやっぱりオワコン.パターンマッチ欲しい…

2011-11-14 10:45:26
鈴木某 @John_Suzuki_Doe

@bleis パターンを網羅してるかのチェックも条件分岐で書けるなら「かっこいいif」で間違ってないんじゃないかなって思ってました.でもそんなの絶対やりたくないので,静的にして自動でチェックしてくれて見た目にもわかりやすいパターンマッチ入れようぜ(考え方の違い)って話なのかと.

2011-11-14 10:57:00
ぐるぐる系SQL @bleis

@John_Suzuki_Doe 「絶対にやりたくない」、ではなくて、「できない」、ですよね。まぁそれでもかっこいいifだというならそれは線引きの問題なので、分岐としてのパターンマッチはかっこいいifでいいです。でも分岐としてじゃないパターンマッチもあるのでそこは別

2011-11-14 10:58:54
ぐるぐる系SQL @bleis

パターンマッチって型によっては条件分岐ぽくなるけど、それってパターンマッチの一部ですよね、というかなんというか。関数の引数に対してパターンマッチやったりとかさ。

2011-11-14 11:15:42
ぐるぐる系SQL @bleis

パターンマッチの例として、(分かりやすさのために)直和型に対するパターンマッチを先に説明するから「あー、複数分岐の為の構文ね」みたいな理解になるのではという仮説

2011-11-14 11:17:06
とむ @masquerade0324

パターンマッチかぁ。帰納的定義がされているものに対しては絶大な効果を発揮するよなぁ。

2011-11-14 11:18:08
mzp @mzp

パターンマッチってif式と何が違うんでしょうか。 網羅性チェックがあるかどうかぐらいしか思いつかない..

2011-11-14 11:33:37
Yoshihiro Imai @yoshihiro503

パターンマッチはかっこいいif式でいいと思う。自分はかっこ悪い言語は使わないだけ。

2011-11-14 11:42:58
ぐるぐる系SQL @bleis

いつの間にかif式になってる・・・

2011-11-14 11:43:29
mzp @mzp

@bleis if文とmatch式が等価でないのは自明ですし!

2011-11-14 11:44:51
きしだൠ(K1S) @kis

パターンマッチのえらいところは、matchによる分岐じゃなくて、パターンの方だよ。分岐しなくてもえらい。

2011-11-14 11:54:23
しいたけ @yuroyoro

パターンマッチって構造を持つデータを分解することだと思ってたけど。

2011-11-14 11:55:12
きしだൠ(K1S) @kis

パターンマッチは、条件分岐のほうじゃなくて、パターンによるデータ構造の分解に意味があるわけで。なので、scalaのval List(a,b,c)= List(2, 3, 4)とかmatchを使わないパターンマッチも便利なわけで。

2011-11-14 12:02:17
山本和彦 @kazu_yamamoto

パターンマッチがかっこいいif文だと言っている人は、表裏一体の豊かなデータ型がかっこいいことに気付いていないに違いない。豊かなデータ型を理解してないのは、僕の定義でいうところの関数プログラミングは理解してないと思う。

2011-11-15 15:36:46
ひらい @h_hirai

そいえば、仮にパターンマッチがかっこいいだけのif文だったとしても、それだけじゃんって言うのは Rubyist とも思えない言い様に感じたなー。構文がかっこいいのはちょーだいじだろ、Rubyist には。

2011-11-15 16:01:22