Scalaのパターンマッチ仕様と結論のない「うれしさ」

わかってないScalaで裸踊りしてみた。
1
Tadayoshi Sato @tadayosi

パターンマッチが単なる条件分岐と比べて、どこが革新的に違うのかが未だによくわからない。確かに便利ではあるんだけど、そこまで言語的に重要な概念なんだろうか? RT @kmizu: 何が言いたいかというと、やっぱりパターンマッチは欲しいよねというありきたりな話です。クロージャの有用性

2010-02-16 23:37:40
Goh Morihara (森原剛) @gohmorihara

@tadayosi Scalaのパターンマッチは、評価順序を規定しない。原理的にはパラレルに実行できるから、今後のマシンとコンパイラの進歩ですごく効率が上がる。もちろんデメリットもあって、それはパターンが排他的である必要がある点。いや、浅学の勘違いかもしれないけど。

2010-02-16 23:44:03
GLAD!! @glad2121

.@gohmorihara 上から順に評価だったと思うけど。

2010-02-16 23:59:23
Goh Morihara (森原剛) @gohmorihara

@glad2121 そなの? ちと調べてみる。I'll be back!

2010-02-17 00:19:21
holic @holic

@gohmorihara バターンマッチは、パターンをアプリオリに指定しなきゃいけないのが不満。パターンを見出すプロセスを軽視していない?

2010-02-16 23:47:16
Goh Morihara (森原剛) @gohmorihara

@holic イテレーティブにしてはいけないの?

2010-02-17 00:18:29
holic @holic

もちろんしてよい。でも MECE 構造は、OCP と相性が悪い。RT: @gohmorihara: @holic イテレーティブにしてはいけないの?

2010-02-17 00:35:06
Goh Morihara (森原剛) @gohmorihara

@holic CEの必要はないのでは? ワイルドカードに_とかあるし。なにより、MEの必要もないのが優秀な同僚によってあかされました! えへへ。

2010-02-17 00:59:23
holic @holic

ワイルドカードが使えるなら CE はいいや。でも ME は本当にいいの?RT: @gohmorihara: @holic CEの必要はないのでは? ワイルドカードに_とかあるし。なにより、MEの必要もないのが優秀な同僚によってあかされました! えへへ。

2010-02-17 01:36:42
Goh Morihara (森原剛) @gohmorihara

@holic 「書かれた順に1つ1つのパターンを試して評価する。最初にマッチしたパターンが選択され」って『Scalaスケーラブルプログラミング』に書いてある。個人的には気に入らんけど。これじゃ同期処理しないとコンカレントにできない!

2010-02-17 01:49:52
GLAD!! @glad2121

パターンマッチについては、PSO の8章、コップ本の15章、24章あたりかな。部分適用関数になるのか? RT @gohmorihara: @glad2121 そなの? ちと調べてみる。I'll be back!

2010-02-17 00:38:18
GLAD!! @glad2121

コップ本の15章、P.250 の最後に「書かれた順に1つ1つのパターンを試して評価する」と書かれています。 RT @gohmorihara: まだ、Scalaのcaseの評価順の裏が取れない。

2010-02-17 00:43:04
Goh Morihara (森原剛) @gohmorihara

一応言っておこう。Scalaのcaseはパターン内で関数呼び出しがあり得ないから、マッチは原理上並列処理できる。パターンがかぶる場合は、マッチ後の処理を選択するために同期しないといけない。けど、マッチ自体は並列処理できるはずよ。

2010-02-17 02:11:42