Haskell function signature and "Could not deduce" compiler error -


मैं एक Haskell पुस्तकालय लिख रहा हूँ जो Data.Vector 's का उपयोग करता है मैंने सफलतापूर्वक पुस्तकालय फ़ंक्शन को लिखा है, लेकिन मुझे नहीं पता कि उसमें हस्ताक्षर कैसे जोड़ना है। नीचे समस्या का उदाहरण देते हुए एक सरल उदाहरण है:

 आयात योग्य डाटा। वेक्टर। जेनरिक के रूप में वी - दो वैक्टर ज़िप करें और टपल टेस्ट के रूप में प्रथम तत्व लौटाएं :: (वी.एक्टक्टर VA, आंशिक ए) = & gt; V a - & gt; V a - & gt; (ए, ए) एक बी = (V.zip a ख) वी। का परीक्षण करें! 0  

यह कोड निम्नलिखित संकलन त्रुटि का कारण बनता है:

 संदर्भ से (V.Vector va, fractional a) उत्पन्न नहीं किया जा सकता है (V.Vector v (a, a)) MyLib.hs पर `V.zip 'का उपयोग: 7: 12-20 संभावित सुधार:` परीक्षण' के लिए प्रकार के हस्ताक्षर के संदर्भ में जोड़ें (वी। वीक्टर वी (ए, ए)) या इसके लिए एक उदाहरण घोषणा जोड़ें (वी। वेक्टर वी (ए, ए)) `(वी।!) 'के पहले तर्क में, अर्थात्` (वी। ज़िप एबी)' अभिव्यक्ति में: (वी.ज़िप अब) वी।! 0 `परीक्षण 'की परिभाषा में: एक बी = (वी.जिप ए ख) वी। परीक्षा लें! 0  

कोड का अनुपालन किया जाता है अगर मैं test फ़ंक्शन के हस्ताक्षर के बारे में टिप्पणी करता हूं सही हस्ताक्षर क्या है?

मैं जीएचसी 6.12.3, वेक्टर लाइब्रेरी 0.7.0.1 का उपयोग कर रहा हूं।

धन्यवाद।

< Div class = "post-text" itemprop = "text">

जीबी कहती है:

  प्रील्यूड डेटा.वेक्टर। जेनरिक & gt; : टी \ एक बी - & gt; (Data.Vector.Generic.zip a b) Data.Vector.Generic।! 0 \ एक बी - & gt; (Data.Vector.Generic.zip a b) Data.Vector.Generic।! 0 :: (वेक्टर वी ए, वेक्टर वी बी, वेक्टर वी (ए, बी)) = & gt; V a - & gt; V b - & gt; (ए, बी)   

आपके मामले से मिलान करना, हस्ताक्षर होना चाहिए

  test :: (वी। वेक्टर वीए, भिन्नात्मक ए, वी। वेक्टर वी (ए, ए)) = & gt; V a - & gt; V a - & gt; (ए, ए)   

(ओह और आपको फ्लेक्सिबल कॉन्टैक्स की जरूरत है)

Comments