मैं सॉफ्टवेयर फाउंडेशन में निम्नलिखित अभ्यास में हूँ :
(** **** 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 natlist natbooltruefalsebaz
क्या मैं सही हूं, या कोई समझा सकता है कि मुझे क्या गलतफहमी है?
baz।
baz।