ฉันสงสัยว่าคำสั่งของการประกาศประเภทอุปนัยสามารถสำคัญได้หรือไม่
ตัวอย่างเช่นใน Coq คุณสามารถกำหนดNat
อย่างใดอย่างหนึ่งโดย:
Inductive Nat :=
| O : Nat
| S : Nat -> Nat.
หรือ
Inductive Nat :=
| S : Nat -> Nat
| O : Nat.
นี่อาจจะเปลี่ยนลำดับของพารามิเตอร์ในเครื่องกำจัดที่สร้างขึ้นโดยอัตโนมัติ แต่นั่นไม่ใช่เรื่องใหญ่
สิ่งที่ฉันสงสัยคือถ้าเป็นไปได้ที่จะเขียนประกาศเช่นนี้
Inductive typewhereordermatters :=
| cons1 : type1
| cons2 : type2.
ซึ่งtype2
เป็นชนิดที่ขึ้นอยู่ขึ้นอยู่กับcons1
? (และในกรณีนี้เขียนคำประกาศในลำดับอื่นจะไม่มีความหมายใด ๆ เพราะtype2
จะหมายถึงcons1
สิ่งที่ยังไม่มีอยู่)