Tôi đang ở bài tập sau trong Cơ sở phần mềm :
(** **** 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 *)
[] *)
Tất cả các câu trả lời tôi đã thấy trên Internet đều nói rằng câu trả lời là 2 và các yếu tố là x và y. Nếu đó là trường hợp, thì nó không rõ ràng đối với tôi các yếu tố . Chắc chắn có hai hàm tạo, nhưng thực sự không thể tạo ra giá trị của kiểu baz .
Không thể tạo giá trị của loại bazvì xcó loại baz -> baz. ycó loại baz -> bool -> baz. Để có được giá trị của loại, bazchúng ta cần chuyển một giá trị của loại bazcho xhoặc y. Chúng ta không thể nhận được giá trị của loại bazmà không có giá trị của loại baz.
Cho đến nay tôi đã giải thích các yếu tố có nghĩa là các giá trị . Vì vậy, (cons nat 1 nil)và (cons nat 1 (cons nat 2 nil))cả hai sẽ là các yếu tố của loại list natvà sẽ có vô số các yếu tố của loại list nat. Sẽ có hai yếu tố của loại bool, đó là truevà false. Theo cách giải thích này, tôi sẽ lập luận rằng không có yếu tố nào thuộc loại baz.
Tôi có đúng không, hoặc ai đó có thể giải thích những gì tôi hiểu lầm?
baz.
baz.