आपका प्रोफेसर शायद जीएचसी का पुराना संस्करण उपयोग कर रहा है। आपके द्वारा पोस्ट की गई रेखा एक सुविधा का उपयोग करती है जिसे हाल ही में हटा दिया गया है। संभव समाधान हैं:
Eq a =>
निकालें और data Shape a = Shape a
लिखें।
जैसा कि जीएचसी कहते हैं, हटाए गए फीचर को फिर से सक्षम करने के लिए -XDatatypeContexts
ध्वज दें।
और अधिक विस्तार में: अपने प्रकार घोषणा की Eq a =>
हिस्सा एक डेटाप्रकार संदर्भ कहा जाता है। इसका एकमात्र कार्य Shape
कन्स्ट्रक्टर के प्रकार को प्रतिबंधित करना है, ताकि Shape :: a -> Shape a
के बजाय आपको Shape :: Eq a => a -> Shape a
मिलें। यह आपको Eq a
लिखने से Shape
एस के प्रकार हस्ताक्षरों में लिखने से नहीं बचाता है, और वास्तव में आपको उनको लिखने की भी आवश्यकता होगी जब आपको अन्यथा आवश्यकता नहीं होगी। यह एक बार उपयोगी था जब डेटाटाइप में सख्त क्षेत्रों को कक्षा की बाधा की आवश्यकता होती थी, लेकिन उस सुविधा को बहुत पहले हटा दिया गया था।
संक्षेप में, केवल संदर्भ को हटाने से आपके प्रोग्राम में हमेशा सुधार होता है, इसलिए उन्हें हास्केल 2011 भाषा मानक से निकाल दिया गया। चूंकि जीएचसी 7.0.1 में उन्हें बंद करने का विकल्प रहा है और 7.2.1 के बाद से यह डिफ़ॉल्ट है।
स्रोत
2013-09-21 16:34:13
संभावित डेटाप्लिकेट [अवैध डेटाटाइप संदर्भ "को कैसे ठीक करें (उपयोग -XDatatypeContexts)?] (Http://stackoverflow.com/questions/22622399/how-to-fix-illegal-datatype-context-use-xdatatypecontexts) – wizzup