Я проводжу наступні вправи з програмного забезпечення :
(** **** 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, і що елементи - це х і у Якщо це так, то мені незрозуміло, що розуміють під елементами . Звичайно є два конструктори, але фактично неможливо створити значення типу 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. Були б два елементи типу bool, які є trueі false. Під цим тлумаченням я б стверджував, що є нульові елементи типу baz.
Я прав, чи хтось може пояснити, що я нерозумію?
baz.
baz.