ฉันต้องการที่จะรู้ว่าประเภทเชิงปริมาณแบบ :เป็นประเภทย่อยหรือ กรณีพิเศษของประเภทมีมีลายเซ็นเดียวกัน: T_e = \ มีอยู่ X: \ left \ {a \ in X, f: X → \ {T, F \} \ right \}T a = ∀ X : { a ∈ X , f : X → { T , F } } T e T e = ∃ X : { a ∈ X , f : X → { T , F } }
ฉันจะพูดว่า "ใช่": หากสิ่งที่เป็นจริง "สำหรับทุก X" ( ) ก็ต้องเป็นจริง "สำหรับบาง X" ( ) นั่นคือคำสั่งด้วย ' ' เป็นเพียงรุ่นที่ จำกัด มากขึ้นของคำสั่งเดียวกันกับ ' :
ฉันผิดที่ไหน
พื้นหลัง: ทำไมฉันจึงถามสิ่งนี้
ฉันกำลังศึกษาประเภทอัตถิภาวนิยมเพื่อให้เข้าใจถึงสาเหตุและวิธีการ"บทคัดย่อ [ข้อมูล] ประเภทมีอัตถิภาวนิยมประเภท" ฉันไม่สามารถเข้าใจแนวคิดนี้จากทฤษฎีเพียงอย่างเดียว ฉันต้องการตัวอย่างที่เป็นรูปธรรมเช่นกัน
น่าเสียดายที่ตัวอย่างรหัสที่ดีนั้นหายากเพราะภาษาการเขียนโปรแกรมส่วนใหญ่มีการสนับสนุนที่ จำกัด สำหรับประเภทที่มีอยู่เท่านั้น (ตัวอย่างเช่นHaskell's
forall
หรือwildcard ของ Java?
) ในอีกทางหนึ่งประเภทที่ได้รับการสนับสนุนเชิงปริมาณได้รับการสนับสนุนโดยภาษาล่าสุดมากมายผ่าน "generics"สิ่งที่แย่กว่านั้นคือgenerics ดูเหมือนจะผสมกับประเภทอัตถิภาวนิยมได้อย่างง่ายดายเช่นกันทำให้ยากยิ่งขึ้นที่จะแยกแยะอัตถิภาวนิยมจากประเภทสากล ฉันอยากรู้ว่าทำไมการผสมผสานนี้เกิดขึ้นได้อย่างง่ายดาย คำตอบสำหรับคำถามนี้อาจอธิบายได้: หากประเภทสากลเป็นเพียงกรณีพิเศษของประเภทที่มีอยู่จริงก็ไม่น่าแปลกใจที่ประเภททั่วไปเช่น Java ของ
List<T>
สามารถตีความได้ทั้งสองวิธี
forall x. P(x)
exists x. P(x)
ระบบการพิมพ์คำนึงถึงประเภทนี้หรือไม่เมื่อตรวจสอบประเภท ... ฉันไม่มีความคิด +1 สำหรับคำถามที่น่าสนใจ