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 baz
vì x
có loại baz -> baz
. y
có loại baz -> bool -> baz
. Để có được giá trị của loại, baz
chúng ta cần chuyển một giá trị của loại baz
cho x
hoặc y
. Chúng ta không thể nhận được giá trị của loại baz
mà 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 nat
và 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à true
và 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
.