パターンマッチはかっこいい if 文なのか?
Haskellは純粋関数型言語を「自称」してるんじゃないですし / “関数型プログラミングとオブジェクト指向 - mizon dev” http://t.co/1jPrSSDv
2011-11-14 09:58:35パターンマッチについての説明は以前のkinabaさんの一連のツイート以上に分かりやすくて伝わりやすい説明しらない
2011-11-14 10:30:35RT @chiku2gonzalez: どっちかってーとパターンマッチって型に対するswitchだよねっと。より具体的にはRubyのcase~when
2011-11-14 10:42:06今RTした「パターンマッチってクラスに対するswitch(Rubyのcase-when)だろ?」ってのが私のパターンマッチに対する認識だった.違ったのか.
2011-11-14 10:43:17@John_Suzuki_Doe 分岐だけに限って話をすると、考慮漏れや絶対に通らないパターンの検出が可能なのでそれだけで単純な分岐とはちがいますよね。それこそそこはOOP的には多態と対応すると言えなくもない。さらに、タプルやレコードのパターンマッチは分岐ではないし。
2011-11-14 10:43:18switchじゃなくてD言語的なfinal switchならまだ近いけど,パターンへのアクセスとかがないからやっぱりオワコン.パターンマッチ欲しい…
2011-11-14 10:45:26@bleis パターンを網羅してるかのチェックも条件分岐で書けるなら「かっこいいif」で間違ってないんじゃないかなって思ってました.でもそんなの絶対やりたくないので,静的にして自動でチェックしてくれて見た目にもわかりやすいパターンマッチ入れようぜ(考え方の違い)って話なのかと.
2011-11-14 10:57:00@John_Suzuki_Doe 「絶対にやりたくない」、ではなくて、「できない」、ですよね。まぁそれでもかっこいいifだというならそれは線引きの問題なので、分岐としてのパターンマッチはかっこいいifでいいです。でも分岐としてじゃないパターンマッチもあるのでそこは別
2011-11-14 10:58:54パターンマッチって型によっては条件分岐ぽくなるけど、それってパターンマッチの一部ですよね、というかなんというか。関数の引数に対してパターンマッチやったりとかさ。
2011-11-14 11:15:42パターンマッチの例として、(分かりやすさのために)直和型に対するパターンマッチを先に説明するから「あー、複数分岐の為の構文ね」みたいな理解になるのではという仮説
2011-11-14 11:17:06パターンマッチは、条件分岐のほうじゃなくて、パターンによるデータ構造の分解に意味があるわけで。なので、scalaのval List(a,b,c)= List(2, 3, 4)とかmatchを使わないパターンマッチも便利なわけで。
2011-11-14 12:02:17パターンマッチがかっこいいif文だと言っている人は、表裏一体の豊かなデータ型がかっこいいことに気付いていないに違いない。豊かなデータ型を理解してないのは、僕の定義でいうところの関数プログラミングは理解してないと思う。
2011-11-15 15:36:46そいえば、仮にパターンマッチがかっこいいだけのif文だったとしても、それだけじゃんって言うのは Rubyist とも思えない言い様に感じたなー。構文がかっこいいのはちょーだいじだろ、Rubyist には。
2011-11-15 16:01:22