forall の話が出たんで、理解をより深めようと調べてたんだけど、
http://en.wikibooks.org/wiki/Haskell/Existentially_quantified_types
このページで分からない部分がある

[Explaining the term existential] のセンテンスの
「But we got almost the same behaviour above using datatypes. Let's declare one.」
の直前まではなんとか分かった

forall = 積集合
exists = 和集合(Haskell の構文には無い)

というのも、納得はできないが、とりあえずそういうものだと見なす事にする
で、そのすぐ下の「MkT :: forall a. a -> T」 の意味を説明している部分がよく分からない

これまでの話の流れからすると、forall a. (a -> T) というのが、
どういう型(を意味する集合)の積集合になるかを考えれば良いんだよな

つまり、

Int -> T という型を意味する集合が持つ要素
String -> T という型を意味する集合が持つ要素
・・・

などに共通する要素だけを持つ型が forall a. a -> T なんだよな
ここまでは合ってる?

で、その共通する要素って、ボトム以外に具体的にどういうものがあるのかな
と考えてみると・・・ よく分からない

「何かを入力して型 T の値を得る関数」というのがそれかなと初め思ったけど、
じゃあこれは例えば「Int -> T という型を意味する集合が持つ要素」に含まれているのか
と考えると、なんか違う気がする