Je suis à l'exercice suivant dans 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 *)
[] *)
Toutes les réponses que j'ai vues sur Internet disent que la réponse est 2 et que les éléments sont x et y. Si tel est le cas, il n'est pas clair pour moi ce que l'on entend par éléments . Il y a certainement deux constructeurs, mais il est impossible de créer réellement une valeur de type baz .
Il est impossible de créer une valeur de type bazcar xhas type baz -> baz. ya un type baz -> bool -> baz. Afin d'obtenir une valeur de type, baznous devons transmettre une valeur de type bazà xou y. Nous ne pouvons pas obtenir une valeur de type bazsans avoir déjà une valeur de type baz.
Jusqu'à présent, j'ai interprété les éléments comme des valeurs moyennes . Ainsi (cons nat 1 nil)et (cons nat 1 (cons nat 2 nil))seraient tous les deux des éléments de type list natet il y aurait un nombre infini d'éléments de type list nat. Il y aurait deux éléments de type bool, qui sont trueet false. Selon cette interprétation, je dirais qu'il n'y a aucun élément de type baz.
Ai-je raison, ou quelqu'un peut-il expliquer ce que je comprends mal?
baz.
baz.