मैं कुछ मॉड्यूल को देखने के (शायद बैटरी में) याद करते हैं, कि एक Infix
मॉड्यूल शामिल अंदर कि खोला जा सकता है अलग-अलग और केवल जब वास्तव में चाहता था। उदाहरण के लिए,
module Rational =
struct
let add a b = ...
let sub a b = ...
module Infix =
struct
let (<+>) = add
let (<->) = sub
end
end
इस तरह से अगर आप Rational.Infix
मॉड्यूल को खोलने के लिए थे के लिए, आप को डी-गुंजाइश नहीं (?) Rational
में कुछ भी रूप में एक ही नाम के साथ किसी भी कार्य करता है।
मैं एक परियोजना पर काम कर रहा हूं जहां हम types
का निर्धारण करने के लिए मॉड्यूल का उपयोग करते हैं। मॉड्यूल होने से केवल एक प्रकार को परिभाषित किया जाता है और उस प्रकार में हेरफेर संगठन में मदद करता है; खासकर जब मॉड्यूल छोटे होते हैं और एक अलग फ़ाइल होने से फायदेमंद नहीं होता है, और वेरिएंट प्रकार समझ में नहीं आता है।
module Node =
struct
end
module Edge =
struct
end
type 'a tree = { nodes : 'a Node.t; edges : 'a Edge.t; }
हम भी उन्हें इस्तेमाल करते हैं, हालांकि के रूप में अलग-अलग फ़ाइलों (-mlpack के साथ संयुक्त), सभी पारसर्स हम जैविक डेटा --Nexus, Fasta, Phylip, वगैरह के लिए की जरूरत के लिए।
आखिरकार, जब एक नया एल्गोरिदम प्रोटोटाइंग करते हैं तो हम इसे पहले ओकंपल में लिखेंगे, फिर सी संस्करण पर काम करेंगे। हम आम तौर पर उसी कार्य नाम के साथ एक आंतरिक मॉड्यूल में ओकंपल संस्करण रखते हैं।
module Align =
struct
module OCaml =
struct
end
end
नेस्टेड मॉड्यूल सही समझ में आते हैं। सवाल, हालांकि, नेस्टेड मॉड्यूल * हस्ताक्षर * के बारे में पूछ रहा है। –
माइकल, आप सवाल पूछने के लिए प्रतीत होता है। नेस्टेड मॉड्यूल के निर्णायक लाभ नेस्टेड मॉड्यूल हस्ताक्षर की आवश्यकता बन जाते हैं। – nlucaroni