मैं टेक्स्ट.एक्सएमएल.लाइट का उपयोग करके एक एक्सएमएल (डी) धारावाहिक लिख रहा हूं और अपने बॉयलरप्लेट को स्क्रैप कर रहा हूं (http://github.com/finnsson/Text.XML.Generic पर) और अब तक मुझे "सामान्य" एडीटी के लिए कोड मिल रहा है लेकिन मैं अटक गया हूं अस्तित्व में deserializing।अस्तित्व और स्क्रैप अपने बॉयलरप्लेट
मैं अस्तित्व डेटा प्रकार
data DataBox where
DataBox :: (Show d, Eq d, Data d) => d -> DataBox
मिला है और मैं इस
instance Data DataBox where
gfoldl k z (DataBox d) = z DataBox `k` d
gunfold k z c = k (z DataBox) -- not OK
toConstr (DataBox d) = toConstr d
dataTypeOf (DataBox d) = dataTypeOf d
संकलित करने के लिए प्राप्त करने के लिए कोशिश कर रहा हूँ, लेकिन मैं समझ नहीं DataBox
के लिए gunfold
लागू करने के लिए कैसे।
त्रुटि संदेश
Text/XML/Generic.hs:274:23:
Ambiguous type variable `b' in the constraints:
`Eq b'
arising from a use of `DataBox' at Text/XML/Generic.hs:274:23-29
`Show b'
arising from a use of `DataBox' at Text/XML/Generic.hs:274:23-29
`Data b' arising from a use of `k' at Text/XML/Generic.hs:274:18-30
Probable fix: add a type signature that fixes these type variable(s)
यह b
के डेटा प्रकार यह पता लगाने में सक्षम नहीं होने के बारे में शिकायत कर रहा है।
मैं dataCast1
और dataCast2
को लागू करने की भी कोशिश कर रहा हूं लेकिन मुझे लगता है कि मैं उनके बिना रह सकता हूं (यानी गलत कार्यान्वयन)।
मैं अपने सवाल लगता है कि कर रहे हैं:
- यह स्क्रैप अपने बॉयलरप्लेट साथ existentials गठबंधन करने के लिए संभव है?
- यदि ऐसा है: तो आप एक मौजूदा डेटा प्रकार के लिए गनफ़ोल्ड को कैसे कार्यान्वित करते हैं?
+1: http://www.mail-archive.com/[email protected]/msg75780.html –
टिप के लिए धन्यवाद। मेरी वर्तमान शर्त यह है कि जोसे पेड्रो मगलाह सही थे, यानी (1) का जवाब "नहीं" है। – finnsson