मेरे पास एक डेटा प्रकार है जिसे मैं डेटाकिंड्स के माध्यम से ghc 7.4.1 और एक दिए गए टाइपक्लास के माध्यम से प्रचारित करता हूं जिसे मैं टाइप विशिष्ट संचालन करने के लिए उपयोग करना चाहता हूं।प्रचारित प्रकार के टाइपक्लास उदाहरण कैसे बनाएं?
data Type = TInt32 | TInt64 | TInt16
class TypeTraits a where
...
और फिर मैं तो जैसे पदोन्नत प्रकार के typeclass उदाहरणों बनाने का प्रयास करें:
Kind mis-match
The first argument of `TypeTraits' should have kind `*',
but `TInt32' has kind `Type'
In the instance declaration for `TypeTraits TInt32'
निर्दिष्ट करने के द्वारा इसे ठीक करने की कोशिश कर रहा:
instance TypeTraits TInt32 where
...
मैं निम्न प्रकार की त्रुटियों मिल 'ए' की तरह:
class TypeTraits (a :: Type) where
...
Kind mis-match
Expected kind `ArgKind', but `a' has kind `Type'
In the type `a -> String'
In the class declaration for `TypeTraits'
आप वास्तव में '...' क्षेत्र में क्या डाल सकते हैं? 'TInt32' एक निवास प्रकार नहीं है, इसलिए यह एक मूल्य स्थिति में 'ए' का उपयोग नहीं कर सकता है। मुझे लगता है कि 'crazyThing :: TypeTraits a => SomeTypeConstructor a' जैसा कुछ अनुमान लगा रहा हूं? मुझे यह समझने में कठिनाई हो रही है कि इस तरह कुछ कैसे उपयोगी हो सकता है, हालांकि अगर मैं वास्तव में फैलता हूं, तो मैं कल्पना कर सकता हूं कि यह उपयोगी * किसी भी तरह * है। शायद। –
विचार प्रत्येक उदाहरण के लिए लक्षण होना था। इसलिए मैं मूल्य की तलाश नहीं कर रहा हूं, लेकिन टाइपक्लास निर्दिष्ट करने के लिए केवल प्लेसहोल्डर और इसके परिणामस्वरूप वह कार्य जिसे मैं वहां चुनना चाहता हूं। उदाहरण के लिए: 'क्लास टाइपट्रेट्स (ए :: टाइप) जहां टाइप टाइप करें एचटी टाइप करें :: प्रॉक्सी ए -> Int' – Chetan