- 737 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 07:53:36.61 ]
- >>729
> 全称量化することで、型パラメータaが取り得る全ての型に共通の性質だけにしか言及できなくなる。 >>726 でも言ったが、俺も普段は似たような考え方で forall を扱っている しかし、この考え方とリンク先のページで述べられている考え方との整合性がなんか上手く取れないんだ (たぶん同じ forall について我々とリンク先は別の視点、捉え方で見ていると思うんだ) > ⊥しか取りえないってのは間違い。 例えば >>726 を繰り返すが (読み返してみて、誤解を与える表現に気づいたので括弧は外した) ⊥, 0, -1, 1, -2, 2, ... を要素に持つInt型という名前の集合 ⊥, True, False を要素に持つBool型という名前の集合 ⊥, "kyu-ri", "daikon", ... を要素に持つString型という名前の集合 ゆえに forall a. a は ⊥ を要素に持つ(名前は知らん)集合 という考え方を取っている(これはハッキリ書かれている、と俺は思う) 貴方や俺が普段取っている「型パラメータaが取り得る全ての型に共通の性質」という考え方ならば、 例えば forall a. (Show a) => a とすれば、その共通する性質をさらに (Show a) と絞り込む という風に素直に考えられ、実際のコンパイラの挙動とも合致する しかし、リンク先の考え方だと、forall a. a で {⊥} という集合なら、 これに対して (Show a) という性質で絞り込むことがちょっと想像できない forall a. a -> T についても同じ リンク先の言いたいことは何なんだろうというのが疑問なんだが、 申し訳ない >>729 でもまだ疑問が解消されない (やっぱりそう考えた方が今はまだ分かりやすいな、という気持ちは再確認できたが)
|

|