recursion - How to create a function in ML using a Recursive Datatype -


डेटाटाइप्स को देखते हुए:

  डेटाटाइप गुच्छा = एक इंट | समूह सूची का समूह; डेटाटाइप 'पूर्व गुच्छा = शून्य | एक 'पूर्व | समूह का 'पूर्व *' पूर्व गुच्छा;  

मैं किसी फ़ंक्शन को कैसे डिज़ाइन कर सकता हूं, उदाहरण के लिए, इस रिकर्सिव फ़ंक्शन का योग वापस लौटाता हूं। मैं समझता हूं कि रिकर्सिव फ़ंक्शन को कैसे परिभाषित किया जाए और इसका उपयोग कैसे किया जाए, लेकिन मुझे यह पता नहीं चला है कि 'पूर्व डेटाैट गुच्छा ऑनलाइन कैसे बदलता है, या मेरे अन्य संदर्भों में से कोई भी।

आपकी दूसरी परिभाषा में गुच्छा डेटा संरचना बहुरूपता बनाता है, यानी, यह किसी भी प्रकार। उदाहरण के लिए ग्रुप (3, वन 2) एक int गुच्छा है, और समूह ("तीन", एक "दो") एक < कोड> स्ट्रिंग गुच्छा । मान शून्य का प्रकार 'एक गुच्छा है जहां ' a किसी भी प्रकार के लिए खड़ा है (अर्थात शून्य प्रकार है int गुच्छा और प्रकार स्ट्रिंग गुच्छा और ...)।

"इस रिकर्सिव फ़ंक्शन का योग वापस करने का आपका लक्ष्य" नहीं है अर्थ: आपके पास रिकर्सिव फ़ंक्शन नहीं है। यदि आप "इस आकस्मिक डेटा संरचना का योग वापस" करते हैं, तो यह अभी भी स्पष्ट नहीं है कि आप क्या चाहते हैं, आपको डेटा संरचना के लिए योग से क्या मतलब है, इसके बारे में अधिक सटीक होना चाहिए जो कि संख्याओं का संग्रह नहीं है।

निम्न फ़ंक्शन एक int गुच्छा में पूर्णांकों की संख्या की गणना करता है जैसा कि आप इसे एमएल इंटरप्रीटर में लिखकर देख सकते हैं, इसका प्रकार int bunch है - & gt; Int , यह है, यह केवल पूर्णांक के गुच्छों पर कार्य कर सकता है (अन्यथा + ऑपरेटर का अर्थ नहीं होगा)।

  मजेदार bunch_sum शून्य = 0 | गुच्छा_सम (एक एक्स) = एक्स | Bunch_sum (समूह (x, b)) = x + bunch_sum b;  

निम्नलिखित फ़ंक्शन किसी भी तत्व प्रकार के साथ तत्वों की संख्या की गणना करता है (जैसा कि इसके प्रकार 'एक गुच्छा - & gt; int से दिखाया गया है)। इस तरह के एक बहुरूपता समारोह को परिभाषित करने का कारण यह है कि इसे गुच्छा के तत्वों के अंदर देखने की ज़रूरत नहीं है: यह parametrically polymorphic है।

  मजेदार Bunch_count शून्य = 0 | Bunch_count (एक एक्स) = 1 | Bunch_count (समूह (एक्स, बी)) = 1 + गुच्छा चिह्न बी;  

(एक उत्पादन कार्यक्रम में, ऐसे कार्यों को एक कम स्पष्ट लेकिन कम संसाधन-भूखा तरीके से लिखा जाना चाहिए, पूंछ पुनरावृत्त एल्गोरिदम का उपयोग कर।)

गुच्छा के बाद से प्रकार लगभग सूचियों के लिए समरूप है, आप प्रेरणा के लिए अपने कार्यान्वयन के मानक सूची लाइब्रेरी के स्रोत को देख सकते हैं।


Comments