量化子ではないのか?どうやってそこから抜けだして存在型にするのだろうか?これについては後の節で検討するが、まずは実際に存在型の力の例を見て、その深淵に飛び込んでみようではないか。型クラスシステムの根拠となっているのは、すべての共通の性質を共有する型のグルーピングである。インスタンス化している型を知っているなら、この型についていくらかわかっていることがあることになる。要素は等値性を比較できることを知っている。あるクラスのインスタンスである様々な型の値を、一つのリストに入れることができれば便利であろう。リストの要素は全て同じ型でなければならないので、通常はこのようなことはできない。呼ばれるものを定義することによってこの条件を緩めることができる。True]このデータ型の定義が何を意味するかを詳しく説明するつもりはないが、この意味は直感的に明らかだろう。重要なのは、3つの異なる型の値に対して構築子を呼び出していて、すべてを一つのリストの中に置いていることだ。このことは、それぞれの値が結果的に同じ型になったということを示している。いう型を与えたからである。ような関数を適用することはできないだろう。これらの値のそれぞれについてわかっていることがある。通じて文字列に変換することができることだ。実際、わかっていることはこれだけである。heteroListもうちょっとだけ踏み込んでみよう。インスタンスであることならわかる。使うことは妥当なのである。インスタンスであると定義しただけで、リストの値を出力できる。note先ほどの疑問に戻ろう。型についての考え方として、その型の値の集合だと考えることができる。可能なあらゆる文字列(とボトム)の集合などなど。これらの集合の共通集合を与える。これは値(つまり要素)がボトムだけであるような型(つまり集合だ)である。現れる要素はいくつだろうか?たとえば文字列は?ボトムはすべての型に共通する唯一の値だ。持つ要素のリスト、つまりボトムのリストの型だ。持つようなリストの型だ。