Saya mengikuti latihan berikut dalam Yayasan Perangkat Lunak :
(** **** 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 *)
[] *)
Semua jawaban yang saya lihat di Internet mengatakan bahwa jawabannya adalah 2, dan unsur-unsurnya adalah x dan y. Jika itu masalahnya, maka bagi saya tidak jelas apa yang dimaksud dengan elemen . Tentunya ada dua konstruktor, tetapi tidak mungkin untuk benar-benar membuat nilai tipe baz .
Tidak mungkin membuat nilai tipe baz
karena x
memiliki tipe baz -> baz
. y
memiliki tipe baz -> bool -> baz
. Untuk mendapatkan nilai tipe, baz
kita harus meneruskan nilai tipe baz
ke salah satu x
atau y
. Kami tidak bisa mendapatkan nilai tipe baz
tanpa memiliki nilai tipe baz
.
Sejauh ini saya telah menafsirkan elemen dengan nilai rata-rata . Jadi (cons nat 1 nil)
dan (cons nat 1 (cons nat 2 nil))
keduanya akan menjadi elemen tipe list nat
dan akan ada jumlah elemen tipe yang tak terbatas list nat
. Akan ada dua elemen tipe bool
, yaitu true
dan false
. Di bawah penafsiran ini, saya berpendapat bahwa tidak ada unsur elemen baz
.
Apakah saya benar, atau bisakah seseorang menjelaskan apa yang saya salah pahami?
baz
.
baz
.