โปรดทราบว่าประเภทที่มีอยู่และเป็นสากลนั้นค่อนข้างแตกต่างกัน มันเป็นตรรกะที่สร้างสรรค์ไม่ตรรกะคลาสสิกและในตรรกะที่สร้างสรรค์และ∃จะไม่ได้เป็นที่เกี่ยวข้องกับพวกเขาอยู่ในตรรกะคลาสสิก∀∃
เป็นชนิดของโปรแกรมที่ได้รับวัตถุชนิดนั้นและกลับวัตถุของการพิมพ์ B ( x ) สิ่งที่สำคัญที่นี่คือประเภท B ( x )ขึ้นอยู่บน xและไม่ได้เป็นเหมือนกันสำหรับทุกx มันอาจแตกต่างกันไปขึ้นอยู่กับว่า xคืออะไร สำหรับหนึ่งอินพุต xเราอาจส่งออกจำนวนเต็ม อีกอันเราอาจเอาท์พุทจำนวนจริง สำหรับอีกอันหนึ่งเราอาจเอาท์พุทฟังก์ชันเหนือจำนวนจริง ถ้า B ( x )∀ x : B ( x )AB ( x )B ( x ) xxxxB ( x )ไม่แตกต่างกันกับแล้วคุณสามารถใช้→ Bในสถานที่ซึ่งเป็นประเภทของการทำงานจากไปBxA → BAB
เป็นเวอร์ชันที่ขึ้นต่อกันของการแยก (สร้างสรรค์) คุณสามารถคิดสร้างสรรค์ร้าวฉาน ∨ Bสองประเภทและ Bเป็นสหภาพเคลื่อนของและB
∃ x : B ( x )เป็นสหภาพเคลื่อนของคอลเลกชันของประเภท B ( x )
ดัชนีโดย x : ความจริงที่ว่าประเภท B (∃ x : B ( x )A ∨ BABAB∃ x : B ( x )B ( x )x : A van แตกต่างกันไปขึ้นอยู่กับค่าของ x : A
ทำให้เป็นชนิดที่ขึ้นต่อกัน เปรียบเทียบกับกรณีที่ Bไม่ขึ้นอยู่กับ x : : ∃ x : ข . เราจะมีหนึ่งสำเนาของเดียวกัน Bสำหรับแต่ละ x : นี่คือ isomorphic เพื่อ × BB ( x )x : ABx : A∃ x : BBx : AA × B
ตอนนี้คุณสามารถถามว่าทำไมเราต้องขึ้นอยู่กับผลิตภัณฑ์และผลรวมประเภท? เพราะพวกเขาทำให้เรามีพลังในการแสดงออกมากขึ้น ตอนนี้เราสามารถละเว้นประเภททั้งหมดและมีประเภททฤษฎี / การเขียนโปรแกรมฟังก์ชั่นที่ไม่ได้พิมพ์ แต่นั่นจะลบประโยชน์ของการมีประเภทในสถานที่แรกเช่นคุณจะไม่ทราบว่าโปรแกรมทั้งหมดจะยุติลงหรือไม่ ดูที่แลมบ์ดาคิวบ์และ
ประเภทที่อ้างถึง ผมคิดว่าเป็นวิธีที่ดีที่จะเข้าใจถึงประเภทขึ้นอยู่กับดีคือดูที่กฎระเบียบสำหรับการแนะนำและกำจัดชนิดที่ขึ้นอยู่ในประเภททฤษฎีมาร์ตินลอฟ-ของ
ประเด็นหลักของประเภทการพึ่งพาคือ: เราต้องการที่จะอยู่ในทฤษฎีการพิมพ์ที่ดีด้วยเหตุผลต่าง ๆ (เช่นการหลีกเลี่ยงข้อบกพร่องการพิสูจน์การสิ้นสุดอัตโนมัติ ฯลฯ ) เราไม่ต้องการไปที่บางสิ่งเช่นแลมบ์ดาแลมบ์ดาที่ไม่ได้พิมพ์ออกมาซึ่งเราสามารถแสดงออกได้เหมือนที่คุณพูดและสิ่งที่ทรงพลังยิ่งกว่า เราสามารถพูดได้ว่าประเภทที่ขึ้นต่อกันนั้นถูกคิดค้นเพื่อให้สามารถแสดงสิ่งต่าง ๆ ได้มากขึ้นในขณะที่ยังคงอยู่ในทฤษฎีประเภทที่ดี