2012-10-10 6 views
13

मैं ओएथ के लिए हास्केल लाइब्रेरी का उपयोग कर रहा हूं और लेखक ने एक प्रकार का शो नहीं लिया है जिसका उपयोग मैं कर रहा हूं और डिबगिंग के लिए प्रिंट करने में सक्षम होना चाहता हूं। मैं इसके लिए शो प्राप्त करना चाहता हूं। क्या लाइब्रेरी के बाहर से ऐसा करने का कोई तरीका है, फ़ंक्शन को बनाने के अलावा सभी रिकॉर्ड फ़ील्ड को एक रिकॉर्ड प्रकार में कॉपी करता है जो शो प्राप्त करता है?किसी और की लाइब्रेरी में परिभाषित प्रकार के लिए शो कैसे प्राप्त करते हैं?

प्रश्न में प्रकार Network.OAuth.Consumer से टोकन है:

http://hackage.haskell.org/packages/archive/hoauth/0.3.5/doc/html/src/Network-OAuth-Consumer.html#Token

उत्तर

19

आप एक GHC विस्तार StandaloneDeriving कहा जाता है का उपयोग कर सकते हैं।

इस विस्तार के साथ

, आप की तरह भाव लिख सकते हैं:

deriving instance Show Token 

इस का उपयोग करने के लिए, अपनी फ़ाइल के शीर्ष पर

{-# LANGUAGE StandaloneDeriving #-} 

डाल दिया।

एक स्टैंडअलोन व्युत्पत्ति का वाक्य विन्यास अनिवार्य रूप से वास्तव में एक instance बयान के लिए वाक्य रचना के रूप में ही है, सिवाय इसके deriving द्वारा और एक where खंड के बिना पहले है। इसका मतलब है कि आप अधिक विशिष्ट उदाहरण लिख सकते हैं जैसे:

deriving instance Show a => Foo (Maybe a) 

आपको अपने उदाहरण के लिए आवश्यक संदर्भ स्पष्ट रूप से देना होगा। आप इस प्रकार का स्टैंडअलोन उदाहरण लिखने के लिए होगा:

deriving instance Show a => Show (Foo a) 

है यही कारण है कि, आप स्पष्ट रूप से ध्यान देने योग्य Show a संदर्भ की जरूरत है।

यह आपके मामले में नहीं आना चाहिए, लेकिन यह ध्यान में रखना कुछ है।

+0

धन्यवाद जो मुझे चाहिए। – dan

संबंधित मुद्दे

 संबंधित मुद्दे