क्या बिल्ली यहाँ पर जा रहा है '` # के खिलाफ':से मेल नहीं कर सके तरह `*
"Couldn't match kind `*' against `#'"
मैं TemplateHaskell का उपयोग कर GHCi में निम्नलिखित कोशिश कर रहा था (ghci -XTemplateHaskell
)
$(reify ''Show >>= dataToExpQ (const Nothing))
मैं इस से Exp
प्राप्त करने की उम्मीद कर रहा था (जिसमें शो का एक उदाहरण है)। मैं इस एप्लिकेशन में हैकेल प्रकारों के बारे में जानकारी डालने के लिए ऐसा कर रहा हूं जैसे कि यह वास्तविक डेटा के रूप में उपलब्ध है, स्ट्रिंग के रूप में नहीं।
मेरा लक्ष्य निम्नलिखित है:
info :: Info
info = $(reify ''Show >>= dataToExpQ (const Nothing))
मैं वास्तव में जो त्रुटि संदेश समझ में नहीं आता, क्या '#' वैसे भी है? यदि #
है, तो # -> #
या * -> #
भी है? क्या यह ऐसा कुछ है जो प्रकारों से संबंधित प्रकारों से संबंधित है (हालांकि मुझे नहीं पता कि यह क्या हो सकता है)?
ठीक है, तो अब मैं समझ GHC प्रकार के एक पदानुक्रम है और कि `# 'अनबॉक्स्ड प्रकार के एक विशेष प्रकार का है कि है। सब ठीक है और अच्छा है, लेकिन यह त्रुटि क्यों पॉप अप करती है? शायद unboxed प्रकार genercis के साथ अच्छी तरह से खेल नहीं है?
मुझे पूरा यकीन नहीं है कि यह अभी तक मुझे समझ में आता है, क्योंकि मैं संकलक द्वारा निष्पादित ऑप्टिमाइज़ेशन होने पर अनबॉक्स किए गए प्रकारों पर विचार करता हूं। मैंने यह भी सोचा कि यदि डेटा का एक उदाहरण मौजूद है, तो इसे सभी प्रकार के लिए वहां होना आवश्यक है जो डेटा संरचना में शामिल हो सकते हैं।
आगे की जांच पर मेरा मानना है कि Names समस्या उत्पन्न करती है, क्या डेटा ToExpQ में उन्हें बाधित करने का कोई तरीका है? वैसे भी उस तर्क का उपयोग कैसे करें?
'#' अनबॉक्स किए गए प्रकारों की तरह है, http://stackoverflow.com/a/3034295/700253 – Vitus
संकेत के लिए धन्यवाद देखें। तो: समस्या को हल करने के लिए कैसे :-)? – scravy