मान लीजिए कि एक हास्केल लाइब्रेरी डिजाइनर किसी कारण से UndecidableInstances
का उपयोग करने का निर्णय लेता है। पुस्तकालय ठीक संकलित करता है। अब मान लें कि कुछ प्रोग्राम लाइब्रेरी का उपयोग करता है (जैसे कि इसके प्रकार के वर्गों के कुछ उदाहरण परिभाषित करता है), लेकिन एक्सटेंशन का उपयोग नहीं करता है। क्या ऐसा हो सकता है कि संकलन विफल रहता है (समाप्त नहीं होता है)?UndecidableInstances Pragma का उपयोग कर स्थानीय स्तर पर संकलन समाप्ति पर वैश्विक परिणाम हो सकते हैं?
यदि ऐसा परिदृश्य हो सकता है, तो मुझे एक उदाहरण देखने में खुशी होगी। उदाहरण के लिए, mtlUndecidableInstances
का उपयोग करता है, क्या यह एक प्रोग्राम लिखना संभव है जो mtl (या एक्सटेंशन का उपयोग करने वाली कोई अन्य मानक लाइब्रेरी) पर निर्भर करता है, UndecidableInstances
का उपयोग नहीं करता है, लेकिन अपरिहार्यता के कारण संकलित करने में विफल रहता है?
मैं आपके समाधान के साथ खेल रहा था और मैं इसे 'कक्षा सी' में कटौती करने में कामयाब रहा जहां एक एफ :: ए -> ए' और 'उदाहरण सी [[ए]] => सी [ए] जहां एफ = आईडी' , जिसे किसी भी अन्य एक्सटेंशन की आवश्यकता नहीं है लेकिन 'अपरिहार्य इंस्टेंस'। –
इसे 'mtl' की जांच करने के बाद, मेरा मानना है कि संकलक को इसका उपयोग करके लूप का कारण बनना संभव नहीं है। एक्सटेंशन की आवश्यकता होने का एकमात्र कारण यह है कि इसके कुछ उदाहरण विफल होते हैं [कवरेज कंडीशन] (http://www.haskell.org/ghc/docs/7.0.1/html/users_guide/type-class-extensions.html# उदाहरण-नियम)। लेकिन स्थिति के पीछे विचार संतुष्ट है - सभी आरएएस प्रकार चर को 'mtl' के उदाहरण घोषणाओं से अनुमानित किया जा सकता है। –
हू, मैं आश्चर्यचकित हूं 'सी [[ए]]' को 'फ्लेक्सिबल कॉन्टैक्स' की आवश्यकता नहीं है। –