저는 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라고 말합니다. 이 경우 elements의 의미가 명확하지 않습니다 . 확실히 두 개의 생성자가 있지만 실제로 baz 유형의 값을 작성하는 것은 불가능합니다 .
이 유형의 가치를 창출하는 것은 불가능 baz
하기 때문에 x
유형이 있습니다 baz -> baz
. y
유형이 baz -> bool -> baz
있습니다. 유형의 값을 얻기 위해 baz
우리는 유형의 값을 전달해야 baz
하나에 x
또는 y
. type 값이 baz
없으면 type 값을 얻을 수 없습니다 baz
.
지금까지 값 을 의미하는 요소 를 해석했습니다 . 그래서 와 두 유형의 요소가 될 것입니다 및 유형의 요소의 무한한 수는있을 것입니다 . 유형의 두 가지 요소가 있으며 , 및 . 이 해석에 따르면 유형이 0 인 요소가 있다고 주장합니다 .(cons nat 1 nil)
(cons nat 1 (cons nat 2 nil))
list nat
list nat
bool
true
false
baz
내가 맞습니까, 아니면 누군가 내가 오해 한 것을 설명 할 수 있습니까?
좋은. 그게 네가 생각하는 것 같아 고마워요, Twernmilt 가치있는 것에 대해, 나는 당신과 같은 반응을 보입니다
—
DW
baz
.
baz
.