में कन्स्ट्रक्टर नामों का संक्षेप में मेरे पास दो मॉड्यूल हैं। एक एक प्रकार प्रकार परिभाषित करता है:Ocaml
module A = struct
type foo = Bar of material | Baz | Boo
(* other stuff *)
end
और मैं foo
उपयोग करने के लिए की दोनों निर्माताओं के रूप में और एक अन्य मॉड्यूल
module B = struct
type foo = A.foo (* I can abbreviate A.foo by assigning it a local alias *)
let f (x : foo) = match x with
| Bar m -> Bar (g m) (* Any way to abbreviate Bar and friends? *)
| Baz | Boo -> x
end
में बाएं हाथ से पक्षों के रूप में लेकिन प्रति "referring to named objects" मैं वेरिएंट सक्षम होने के लिए चाहते हैं एक मॉड्यूल-पथ साथ संस्करण नाम उपसर्ग के लिए है:
let f (x : foo) = match x with
| A.Bar m -> A.Bar (g m)
| A.Baz | A.Boo -> x
वहाँ यू से बचने को छोड़ने के लिए कोई तरीका है मॉड्यूल पथ open
आईएनजी से कम और A
से अन्य सभी सामानों में खींचें?
शानदार। धन्यवाद। –
यदि "दृश्यों के पीछे" काम करके आप [प्रकार-आधारित लेबल असंबद्धता के प्रस्ताव] (http://gallium.inria.fr/~scherer/gagallium/resolving-field-names/) का जिक्र कर रहे हैं, तो (1) इसे अंत में स्वीकार नहीं किया जा सकता है और (2) इसे रिकॉर्ड लेबल के लिए (गैर-पॉलिमॉर्फिक) संस्करण रचनाकारों के लिए भी काम करना चाहिए। – gasche
'ओपन इन' सिंटैक्स ओसीएमएल में वर्क 3.12 ऊपर से उपलब्ध है। – didierc