Evrensel olarak nicelendirilmiş bir tip : T a = ∀ X : { a ∈ X , f : X → { T , F } } , varoluşsal olarak nicelenmiş bir alt tip mi, yoksa özel bir durum mu olduğunu bilmek istiyorum tip , T e aynı imza ile: T e = ∃ X : { a ∈ X , f : X → { T , K } }
Bir yerde yanlış mıyım?
Arka plan: Bunu neden soruyorum?
"Soyut [Veri] Türlerinin Varoluşçu Türleri" nin neden ve nasıl olduğunu anlamak için varoluşçu türleri inceliyorum . Bu kavramı sadece teoriden iyi anlayamıyorum; Somut örneklere de ihtiyacım var.
Ne yazık ki, iyi kod örneklerini bulmak zordur çünkü çoğu programlama dili varoluşçu türler için sınırlı bir desteğe sahiptir. (Örneğin, Haskell
forall
veya Java'nın?
joker karakterleri .) Diğer yandan, evrensel olarak nicelenen türler "jenerikler" yoluyla birçok yeni dil tarafından desteklenmektedir.Daha da kötüsü, jenerikler de varoluşsal tiplerle kolayca karışıyor gibi görünüyor , varoluşçu evrensel tiplerden ayırmayı daha da zorlaştırıyor. Bu karışımın neden bu kadar kolay gerçekleştiğini merak ediyorum. Bu sorunun cevabı bunu açıklayabilir: Evrensel türler gerçekten de varoluşçu türlerin özel bir örneğiyse, genel türlerin, örneğin Java'ların
List<T>
her iki şekilde de yorumlanabileceği şaşırtıcı değildir .
forall x. P(x)
öyleyse exists x. P(x)
. Tipleri kontrol ederken tip sistemlerinin bunu dikkate alıp almadığı ... Hiçbir fikrim yok. İlginç bir soru için +1.