Iは、普遍的に定量タイプかどうかを知りたい:T = ∀ X :{ ∈ X 、F :X → { T 、Fは} }、存在、定量化を、サブタイプ、又は特別なケースでありますタイプTのEを同じ署名で:TのE = ∃ X :{ ∈ X 、F :X → { T 、F } }
私は「はい」と言うだろう:何かが「すべてのXのための」真の場合()、それはまた、「いくつかのXのために、」真でなければならない(∃ X)。それは、「は声明で∀」は同じ文のより制限されたバージョンだけでは「∃」∀ X 、P (X )?
どこか間違ってる?
背景:なぜこれを求めているのですか?
「抽象[データ]型には実在型がある」理由と方法を理解するために、実在型を研究しています。この概念を理論だけで十分に理解することはできません。具体的な例も必要です。
残念ながら、ほとんどのプログラミング言語では実在型のサポートが限られているため、良いコード例を見つけるのは困難です。(たとえば、Haskellの
forall
、またはJavaの?
ワイルドカード。)一方、普遍的に数量化された型は、「ジェネリック」を介して多くの最近の言語でサポートされています。さらに悪いことに、ジェネリックも実在型と容易に混同されるようで、実在型と普遍型を区別するのがさらに難しくなります。この混乱がなぜこんなに簡単に起こるのか興味があります。この質問への答えはそれを説明するかもしれません:普遍的な型が実在型の特別な場合だけであるなら、Javaのような一般的な型
List<T>
がどちらの方法でも解釈できることは不思議ではありません。
forall x. P(x)
、その後exists x. P(x)
。型をチェックするときに型システムがこれを考慮するかどうか...私にはわかりません。興味深い質問には+1。