HaskellとOCamlの型の違い

後でちゃんと読む。抜けがあったら追加よろ(他力本願
24
Hideyuki Tanaka @tanakh

完全な型推論よりも、型システムの表現力が重要である、という考えは多分OCamlとは相容れない。そこがOCamlとHaskellの決定的な差であって、PureとかLazyとかの違いはそれに比べれば割りとどうでもいい。

2012-03-26 14:24:35
Jun Furuse 🐫🌴 @camloeba

RT @tanakh 完全な型推論よりも、型システムの表現力が重要である、という考えは多分OCamlとは相容れない。そこがOCamlとHaskellの決定的な差であって、PureとかLazyとかの違いはそれに比べれば割りとどうでもいい。

2012-03-26 14:36:35
Jun Furuse 🐫🌴 @camloeba

OCaml が完全な型推論を提供していたことなどあったか?そもそも完全な型推論て何?なんか勘違いしてない?

2012-03-26 14:38:28
山本和彦 @kazu_yamamoto

.@camloeba 横からすいません。正しい OCaml プログラムには、型シグニチャのような補助情報がなくとも、型が付けられる完全性があると思っていましたが、違うのですか?

2012-03-26 14:42:40
Jun Furuse 🐫🌴 @camloeba

@kazu_yamamoto format の型付けは全く完全ではありません。これは caml-light の時代からの伝統で、別に完全性にこだわっている言語ではない事は明らかです。

2012-03-26 15:07:32
Jun Furuse 🐫🌴 @camloeba

もちろん、 OCaml の型推論は完全です (キリッ と我々が言うときは format の事は都合よく忘れているわけです。ヒドいですね!

2012-03-26 15:13:46
山本和彦 @kazu_yamamoto

.@camloeba 「お前なんか unsafePerformIO があるくせに」と言われたら「お前こそ format あるくせに」と言い返せばいいんですね。:)

2012-03-26 15:21:20
Jun Furuse 🐫🌴 @camloeba

OCaml は今の所 non-parametric polymorphism を採用していない。ですからHaskell のような principal typing の喪失のようなことはない。主型付けがあるならそれを推論しようとするのは当たり前の事で、こだわっている事ではありません

2012-03-26 15:21:58
Jun Furuse 🐫🌴 @camloeba

@kazu_yamamoto はい。Obj.magic は「公式に」Camlの一部ではないと宣言されていますから、magic を指摘しても意味ないです

2012-03-26 15:24:07
Jun Furuse 🐫🌴 @camloeba

逆に Haskell は type class によるオーバーロードを入れたから主型付が無くなるのは当たり前で型推論は完全ではなくなります。だが、それ以外の部分は「完全」ですよね?そうじゃなきゃ不便だ。そういう点で両者ともできる限りの推論にはこだわっている

2012-03-26 15:32:17
山本和彦 @kazu_yamamoto

.@camloeba Haskeller の主観としては、OCaml の format は無視できるほど小さいので完全と言ってもいいけど、Haskell の型クラスは無視できるほど小さくないので不完全と表現したくなるのでしょう。

2012-03-26 15:40:39
Jun Furuse 🐫🌴 @camloeba

@kazu_yamamoto ただし format は安全です。推論がマジカルなだけ

2012-03-26 15:45:32
Jun Furuse 🐫🌴 @camloeba

皆さんの言う言語Xの型推論は完全って何ですか? 推論が undecidable であるものはどうしようもない。そこを除いた完全性の議論をしたいのではないの?それらの推論まで完全性に入れるなら SMLモジュールやら多相再帰のある OCaml なんか完全でも何でもないのよ

2012-03-26 15:56:24
Jun Furuse 🐫🌴 @camloeba

なんか日本の Haskellers の中に実在しない不思議な OCaml 感が醸成されているようなので心配です。もう少し触って正しい dis り方を学んでください。このままだと議論が噛み合わない。

2012-03-26 16:27:56
スマートコン @mr_konn

ぼくはOCamlは触ったことほとんどないので「構文があまり好きではない」以外のdisりをしたことないし、構文を云々するdisは特に真面目に取り合う人間はいないだろうし安心している

2012-03-26 16:29:13
山本和彦 @kazu_yamamoto

.@camloeba シグニチャを書かなくても、正しいプログラムであれば、型が付くことは何と表現すればいいのですか?

2012-03-26 16:30:18
Jun Furuse 🐫🌴 @camloeba

@mr_konn まじで syntax はなんとかしたいよね ここんとこどんどん変な方向に…

2012-03-26 16:32:37
Jacques Garrigue @garriguejej

それは違うよ。Haskellでは主要性が保たれる。失われるのは直感的な型システムに対する完全性。 RT @camloeba 逆に Haskell は type class によるオーバーロードを入れたから主型付が無くなるのは当たり前で型推論は完全ではなくなります。

2012-03-26 16:45:48
Jun Furuse 🐫🌴 @camloeba

あらあらこいつはまいったね RT @garriguejej それは違うよ。Haskellでは主要性が保たれる。失われるのは直感的な型システムに対する完全性。 RT @camloeba 逆に Haskell は type class によるオーバーロードを入れたから主型付が無く

2012-03-26 16:47:53
Jacques Garrigue @garriguejej

@camloeba 要するに主型付けがないのに直感的な型付けが存在したりする。しかし Haskell の型推論はそれを排除(しようと)するので、主要性自体は保たれる。少なくとも拡張し過ぎなければ。

2012-03-26 16:48:11
Jun Furuse 🐫🌴 @camloeba

@garriguejej 私は直感的な完全性が無いことを主要型が無いと書いておりましたが違う?

2012-03-26 16:49:57
Jacques Garrigue @garriguejej

間違ってはいない。確かに直感的な型システムは主要性を持たない。ただし、即 Haskell が主要性を持たないことにはならない。 RT @camloeba 私は直感的な完全性が無いことを主要型が無いと書いておりましたが違う?

2012-03-26 16:52:49
Jacques Garrigue @garriguejej

@camloeba ちなみに、厳密に言えば、 OCaml も主要性を持たない。しかし原因は多相メソッドやラベル付き引数で、 type class ほど必須なものではありません。また、主要性を持つ(直感的でない)型システムは存在する。

2012-03-26 16:55:15
Jacques Garrigue @garriguejej

そうですね。 OCaml はたとえ主要性がなくても、評価には影響しないので深刻ではない。しかし Haskell でそういうものを許してしまうと意味に曖昧性が出てくる。 RT @camloeba ああcoherence?!!

2012-03-26 16:57:48