मैं निम्नलिखित कोड काम करने के लिए उम्मीद नहीं थी:न्यूम पढ़ने पर इंटेल पढ़ने के लिए हास्केल डिफ़ॉल्ट रूप से क्यों दिखाई देता है?
foo :: (Num a) => a -> a
foo x = x + x
main = do
print (foo (read "7"))
क्योंकि यह संभव पूरी तरह से के प्रकार (पढ़ें "7") अनुमान लगाने के लिए कोड के आधार पर नहीं है। लेकिन जीएचसी (6.12.3) अन्यथा सोचता है और प्रिंट करता है 14.
यदि "7" को "7.2" में बदल दिया गया है, तो कोड "कोई पार्स" के साथ विफल रहता है। यहाँ क्या चल रहा है? हास्केल कैसे निर्णय लेता है कि किस उदाहरण का उपयोग करना है?
'(अंक एक, एक पढ़ें) => [चार] -> ए 'स्पष्ट रूप से संदिग्ध है। इसे किसी भी तरह से तय करना है, इसलिए मुझे लगता है कि 'Int'' Num 'के लिए डिफ़ॉल्ट होता है। शायद क्योंकि यह टाइपक्लास का पहला उदाहरण है? मैं मैन्युअल खोज करने जा रहा हूँ। यह एक दिलचस्प सवाल है। – alternative
सिर्फ रिकॉर्ड के लिए: यह 'इंटीजर 'पर डिफ़ॉल्ट है, न कि' Int'। – sepp2k