私はSoftware Foundationsで次の演習に参加しています。
(** **** 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であると言っています。その場合、要素の意味がわかりません。確かに2つのコンストラクタがありますが、実際にタイプbazの値を作成することは不可能です。
これは、型の値を作成することは不可能です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
。との2つのタイプの要素bool
がtrue
ありfalse
ます。この解釈の下では、タイプの要素はゼロであると私は主張しbaz
ます。
私は正しいですか、それとも誰かが私が誤解していることを説明できますか?
いいね。それはあなたが考えていると私が思ったものです。ありがとう、Twernmilt。価値があることについては、私はあなたと同じ反応をします。私も、タイプの要素がゼロであるという答えを期待していたでしょう
—
DW
baz
。
baz
。