ฉันกำลังฝึกหัดต่อไปนี้ในมูลนิธิซอฟต์แวร์ :
(** **** Exercise: 2 stars (baz_num_elts) *)
(** Consider the following inductive definition: *)
Inductive baz : Type :=
| x : baz -> baz
| y : baz -> bool -> baz.
(** How _many_ elements does the type [baz] have?
(* FILL IN HERE *)
[] *)
คำตอบทั้งหมดที่ฉันเห็นบนอินเทอร์เน็ตบอกว่าคำตอบคือ 2 และองค์ประกอบคือ x และ y หากเป็นเช่นนั้นก็ไม่ชัดเจนสำหรับฉันความหมายขององค์ประกอบคืออะไร มีคอนสตรัคเตอร์สองตัว แต่เป็นไปไม่ได้ที่จะสร้างมูลค่าของประเภทบาซ
มันเป็นไปไม่ได้ที่จะสร้างค่าของชนิดbaz
เพราะมีประเภทx
มีประเภท เพื่อที่จะได้รับค่าของชนิดที่เราต้องส่งค่าจากประเภทนี้อย่างใดอย่างหนึ่งหรือ เราไม่สามารถรับค่าประเภทโดยที่ไม่มีค่าประเภทแล้วbaz -> baz
y
baz -> bool -> baz
baz
baz
x
y
baz
baz
จนถึงขณะนี้ผมได้รับการแปลความหมายขององค์ประกอบที่จะเฉลี่ยค่า ดังนั้น(cons nat 1 nil)
และ(cons nat 1 (cons nat 2 nil))
ทั้งสองจะเป็นองค์ประกอบของประเภทและจะมีจำนวนอนันต์ขององค์ประกอบของประเภทlist nat
list nat
จะมีสององค์ประกอบของประเภทbool
ซึ่งเป็นและtrue
ภายใต้การตีความนี้ผมจะเถียงว่ามีศูนย์องค์ประกอบของประเภทfalse
baz
ฉันถูกต้องหรือมีคนอธิบายสิ่งที่ฉันเข้าใจผิดได้ไหม?
baz
ฉันก็คาดว่าจะมีคำตอบที่เป็นไปได้ว่ามีศูนย์องค์ประกอบของประเภท
baz
ฉันได้เพิ่มวรรคอธิบายเหตุผลที่ผมคิดว่ามันเป็นไปไม่ได้ที่จะสร้างค่าของชนิด