यह मेरी राय में ओकैमल वाक्यविन्यास के परेशान भागों में से एक है। जिस तरह से दिखता है, उसके बावजूद, कन्स्ट्रक्टर फू को इसके तर्क के रूप में 2-ट्यूपल की आवश्यकता नहीं होती है। यह कोष्ठक में दो मानों की आवश्यकता है, लेकिन वे एक tuple नहीं हैं। तो यह बस मामला है कि t
में गलत प्रकार है। इस काम करने के लिए जिस तरह से कहने के लिए है:
let (a, b) = t in Foo (a, b)
समस्या वास्तव में उस कोष्ठक दो अलग अलग चीजों के लिए इस्तेमाल किया जा रहा है (या तो मैं दावा करते हैं) है। एक बार जब आप इसका इस्तेमाल कर लेते हैं तो इससे निपटना मुश्किल नहीं होता है।
संपादित: यदि आप चाहते निर्माता फू दो अलग-अलग मूल्यों से एक भी टपल लेने के लिए, बल्कि, आप इसे इस प्रकार परिभाषित कर सकते हैं:
type foo = Foo of (int * int)
फिर उसे अपने मूल कोड के बाकी होगा काम।
स्रोत
2012-03-19 17:33:55
दो से अधिक चीजों के लिए अभिभावक का उपयोग किया जाता है! वे ओपी का उदाहरण भी काम करते हैं-अगर वह केवल 'टाइप * int' (int * int) ' –
हां बदलता है, तो मैंने इसे टिप्पणी करने से ठीक पहले एक संपादन में जोड़ा (मुझे नहीं कि मुझे क्रेडिट या कुछ भी प्राप्त करने की आवश्यकता है :-)। स्पष्टीकरण के लिए –
धन्यवाद! – Ricardo