2017-08-27 14 views
7

बहुत समय पहले मैंने Natural डेटा प्रकार base में खोजा है। जब आप गैर-ऋणात्मक पूर्णांक प्रकार का उपयोग करना चाहते हैं तो यह लिया जाना चाहिए (जैसा कि मुझे लगता है)। लेकिन यह बिल्कुल स्पष्ट नहीं है कि मुझे NaturalInteger क्यों पसंद करना चाहिए। दोनों प्रकारों में मनमाना परिशुद्धता है, दोनों में काफी रनटाइम प्रतिनिधित्व - Integer representation और Natural representation है। लेकिन Naturalcan throw pure exceptions जब आप प्राकृतिक संख्या घटाते हैं और यह वास्तव में आपके कोड में अधिक टाइपफ़ाइट नहीं जोड़ता है। जबकि Integer सभी संकुलों में अधिक लोकप्रिय है।हास्केल में 'इंटीजर' पर 'प्राकृतिक' कब चुनना है?

तो मुझे कब और क्यों Natural का उपयोग करना चाहिए?

+1

यह थोड़ा सा विचार किया जा सकता है, लेकिन मेरा मानदंड "यदि आप नकारात्मक परिणाम में रनटाइम त्रुटि पसंद करेंगे, तो 'प्राकृतिक' चुनें – chi

+0

@chi सहमत। जबकि हमारे पास 'नकारात्मक' और '(-)' 'Num' प्रकार वर्ग के अंदर है, हम घटाव की अनुमति न देने के लिए बहुत कुछ कर सकते हैं। – Shersh

उत्तर

4

मुझे नहीं लगता कि आप Natural या Integer का उपयोग क्यों करना चाहते हैं। इसके बजाय Rational का उपयोग क्यों न करें? यह मनमाने ढंग से परिशुद्धता है, इसमें एक अनुकूलित रनटाइम प्रतिनिधित्व है, और प्राकृतिक, पूर्णांक, और राशन के लिए काम करता है!

मेरा मुद्दा यह है कि हमें एक प्रकार का चयन करना चाहिए जो अर्थपूर्ण रूप से समझ में आता है। आइए प्राकृतिक घरों के साथ सड़क पर घरों की गिनती करें, हमारे अगले गोल्फ गेम को पूर्णांक के साथ रिकॉर्ड करें, और राशन के साथ एक ताजा ब्लूबेरी पाई विभाजित करें।

+0

मुझे नहीं पता कि इसका कौन सा हिस्सा (यदि कोई है) का अर्थ व्यंग्यात्मक रूप से है। मुझे लगता है कि आपको बेहतर ढंग से लिखना चाहिए कि आपकी राय क्या है। – leftaroundabout

+0

@ बाएंअराउंडबाउट मैं आपको एक अलग उदारवादी शैली में दूसरा जवाब जोड़ने के लिए प्रोत्साहित करता हूं। – erisco

+0

@ सिस्को अर्थपूर्ण अर्थ के कारण 'प्राकृतिक' चुनने का कारण एक अच्छा कारण है। लेकिन फिर: क्यों नहीं 'नया प्रकार प्राकृतिक = प्राकृतिक इंटीजर'? 'तर्कसंगत' 'gcd' फ़ंक्शन पर लगातार कॉल की वजह से 'इंटेगर' या 'प्राकृतिक' से बहुत धीमी है। लेकिन यह स्पष्ट नहीं है कि कौन सा - प्राकृतिक या 'इंटीगर' - संकलक अनुकूलन और इनलाइनिंग और उन सभी चीजों के कारण धीमा है। मेरा सवाल सिर्फ नहीं है «duh, मेरे पास दो प्रकार हैं, emm ... मुझे क्या उपयोग करना चाहिए? मैं बहुत बेवकूफ हूँ, मैं »नहीं चुन सकता। लेकिन इस तरह के अर्थपूर्ण के साथ इस तरह के 'प्राकृतिक' प्रकार क्यों बनाते हैं। इसके बजाय संतृप्ति क्यों अपवाद? मुझे क्या लाभ मिल सकते हैं? – Shersh

संबंधित मुद्दे