मैं सॉफ्टवेयर फाउंडेशन में निम्नलिखित अभ्यास में हूँ :
(** **** 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 हैं। अगर ऐसा है, तो यह मेरे लिए स्पष्ट नहीं है कि तत्वों का क्या मतलब है । निश्चित रूप से दो निर्माणकर्ता हैं, लेकिन वास्तव में प्रकार बाज का मूल्य बनाना असंभव है ।
टाइप का मान बनाना असंभव है 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
।