私は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。