2017-07-20 14 views
6

यहां हास्केल नौसिखिया। मुझे type classes से पता है कि => का अर्थ है "के संदर्भ में"। फिर भी, मैं निम्नलिखित प्रकार, मॉड्यूल Statistics.Sampleइस प्रकार क्या है?

(Vector v (Double, Double), Vector v Double) => v (Double, Double) -> Double 

में पाया क्या कमी => की v बाईं तरफ के लागू किया जा रहा नहीं पढ़ सकते हैं?

+0

मुझे यकीन नहीं है कि आपको "के संदर्भ में" कहां मिला है। इसका अर्थ क्या है "यदि बाईं ओर की बाधाएं पूरी की जाती हैं, तो दाईं ओर दिए गए प्रकार के साथ एक फ़ंक्शन मौजूद है"। – Cubic

उत्तर

10

Data.Vector.Generic.Vector typeclass दो प्रकार तर्क, v और a जहां v :: * -> * कंटेनर के प्रकार है और a :: * कंटेनर में तत्वों के प्रकार है लेता है। यह vector पैकेज में परिभाषित वेक्टर प्रकारों के लिए बस एक सामान्य इंटरफ़ेस है, विशेष रूप से Data.Vector.Unboxed.Vector

यह अनिवार्य रूप से कह रहा है कि प्रकार v, (Double, Double) और Double धारण करने के लिए सक्षम होना चाहिए, हालांकि एक साथ नहीं। यदि आप v ~ Data.Vector.Unboxed.Vector का उपयोग करना चाहते थे तो यह ठीक काम करता है। कारण correlation के कार्यान्वयन के कारण है, जो unzip का उपयोग करता है। यह फ़ंक्शन v (a, b) को (v a, v b) में विभाजित करता है। चूंकि correlationv (Double, Double) पर काम कर रहा है, इसलिए v अतिरिक्त बाधा की आवश्यकता है Double एस।

यह सामान्य प्रकार correlationData.Vector.Vector से अधिक प्रकार के फ़ंक्शन काम करने के लिए है, जिसमें किसी अन्य वेक्टर शैली प्रकार शामिल हैं जो अन्य पुस्तकालयों में लागू हो सकते हैं।


मैं तनाव v(Double, Double) पकड़े करने में सक्षम है और यह भी Double पकड़े करने में सक्षम है के लिए कि इन बाधाओं

Data.Vector.Generic.Vector v (Double, Double) 
Data.Vector.Generic.Vector v Double 

राज्य कि जो कुछ भी प्रकार आप चुनते हैं चाहता हूँ। यह आपके वेक्टर प्रकार के लिए कुछ पूर्व शर्त निर्दिष्ट करता है, न कि वेक्टर की वास्तविक सामग्री। वेक्टर की वास्तविक सामग्री correlation फ़ंक्शन के पहले तर्क में निर्दिष्ट है।

+0

तो 'फू ए, बार ए => ए -> Int' किसी भी प्रकार की कक्षा फू या बार होने की अपेक्षा करता है? हस्ताक्षर के अगले भाग के बारे में क्या - 'v' को केवल 'v' के बजाय, tuple के रूप में निर्दिष्ट क्यों किया गया है, क्योंकि हमने इसे पहले ही सीमित कर दिया है? – Vorac

+0

यह कहता है कि 'ए' को 'Foo' _and_ 'बार' दोनों के लिए कार्यान्वयन करना है, न तो। बाधा "टुपल सिंटैक्स" के साथ दी जाती है क्योंकि यह कई बाधाओं के लिए वाक्यविन्यास है। आपको वास्तव में करना होगा (फू ए, बार ए) => ए -> Int', माता-पिता के बिना यह संकलित नहीं होगा। मैं ऊपर क्या कह रहा हूं कि 'v' को एक सामान्य' वेक्टर 'माना जाता है जो' (डबल, डबल) 'या' डबल 'रखने में सक्षम है। इसका मतलब यह नहीं है कि एक वेक्टर है जिसका तत्व एक साथ (डबल, डबल) 'और' डबल 'है (मैं पाइथन के बारे में सोच रहा हूं' [(1.0, 2.0), 3.0] ')। – bheklilr

+0

पायथन - कार्यात्मक प्रोग्रामिंग का सी। – Vorac

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