>>726
Int型はIntの値の集合ではなく、Intの値を取り出せるデータ構造の集合だ、と定義すればいい。
例えば、0というデータから取り出せるのはIntだけでなく、Doubleも取り出せる。
forall a. a->TからはInt->TやDouble->Tなどを取り出せる。