मैं प्रेत प्रकारों के बारे में अधिक जानने की कोशिश कर रहा हूं। मैं राल्फ हिनज द्वारा Fun with Phantom Types के माध्यम से पढ़ने की कोशिश कर रहा हूं। वह एक कीवर्ड with
का उपयोग कर रहा है मैंने पहले नहीं देखा है और मैं संकलन नहीं कर सकता। जब मैं कोशिश करता हूं तो मुझे =
पर एक पार्स त्रुटि मिलती है।प्रेत प्रकारों को परिभाषित करना - उदाहरणों को संकलित नहीं कर सकते
data Type t = RInt with t = Int
| RChar with t = Char
| RList (Type a) with t = [a ]
| RPair (Type a) (Type b) with t = (a, b)
अखबार में इससे पहले, वह कहता है कि "के साथ" बयान, सख्ती से आवश्यक नहीं हैं आप a = t
बजाय सेट कर सकते हैं कि, लेकिन मैं समझ नहीं उनके बिना इस डेटा प्रकार परिभाषित करने के लिए कैसे। निम्नलिखित त्रुटियों के साथ: Not in scope: type variable 'a'
data Type t = RInt
| RChar
| RList (Type a)
| RPair (Type a) (Type b)
मुझे क्या याद आ रही है?
ऐसा लगता है कि ऊपर दिए गए जीएडीटी का उपयोग करना लिखना बहुत संभव है, लेकिन मुझे अभी भी रूफ के इरादे में दिलचस्पी है। क्या कोई विशेष कीवर्ड है? क्या आप इसे जीएडीटी के बिना व्यक्त कर सकते हैं? –
> "अगर हमारे पास केवल प्रकार के लिए टर्म के प्रकार तर्क को बाधित करने का साधन था। अब, यह वही है जो उपरोक्त 'हल्का' एक्सटेंशन हमें करने की अनुमति देता है। इस एक्सटेंशन को देखते हुए हम टर्म डेटा प्रकार की घोषणा करते हैं निम्नानुसार है ... "शायद मुझे याद आया लेकिन मुझे लगता है कि यह एक * कल्पना * एक्सटेंशन है जो वास्तव में अस्तित्व में नहीं है (या तो ** मैं ** सोचता हूं) लेकिन हाँ जीएडीटी करेगा;) – Carsten