में परिभाषित किया गया था यह ठीक काम क्यों करता है?मॉड्यूल के बाहर खुले यूनियनों का उपयोग करके उन्हें
module Account = struct
type account_type = Current of float | Savings of float
end
let sarah = Account.Current 100.0;;
जबकि निम्नलिखित में अंतिम पंक्ति Error: syntax error
उत्पन्न करती है?
module Account = struct
type 'a account_type = [> `Current of float | `Savings of float ] as 'a
end
let pete = Account.`Current 100.0;;
यही है, मैं मॉड्यूल खोलने के बिना मॉड्यूल के बाहर ओपन यूनियन प्रकार का उपयोग क्यों नहीं कर सकता? मैं कहना चाहिए मुझे पता चला है कि करने के लिए अंतिम पंक्ति को बदलने:
open Account;;
let pete = `Current 100.0;;
ठीक काम करता है, लेकिन स्पष्ट रूप से यह बोझिल है अगर मैं account_type
एक बहुत का उपयोग करें, या वैकल्पिक रूप से मैं किसी भी कोड के शुरू में Account
खोलने के लिए है अनुभाग जहां account_type
का उपयोग किया जाता है, जिसका अर्थ है कि मैं Account
के लिए हस्ताक्षर का उपयोग करके प्राप्त करने वाले अमूर्तता को त्याग दूंगा, मैंने कई ओकैम ट्यूटोरियल्स के साथ-साथ INRIA दस्तावेज़ों के माध्यम से ट्रैवल किया है, और मुझे कोई उल्लेख नहीं मिल रहा है आप यह कैसे करते हैं
क्या हर बार मॉड्यूल खोलने से बचना संभव है जब मैं account_type
का उपयोग करना चाहता हूं?
अग्रिम धन्यवाद,
ज़ैक
आह, मैंने बैकटिक से बैकटिक से बचने की कोशिश की, इस प्रकार इसमें शामिल सभी के लिए भ्रम पैदा हुआ। – nlucaroni