2010-12-07 13 views
5

OCaml में, आप घोंसला हस्ताक्षर कर सकते हैं:ओकैमल में नेस्टेड हस्ताक्षर का उदाहरण?

module type FOO = 
sig 
    module type BAR 
    (* … *) 
end 

मैं बस के बाद से मैं किसी भी स्थानों पर जहां यह जरूरत होगी नहीं सोच सकते हैं, अगर कोई उपयोग में इस बात का कोई उदाहरण था सोच रहा था। मुझे कल्पना है कि यह संभवतः मज़दूरों के रिटर्न हस्ताक्षर में उपयोगी है, लेकिन मैं किसी विशिष्ट चीजों के बारे में नहीं सोच सकता।

उत्तर

5

मैं कुछ मॉड्यूल को देखने के (शायद बैटरी में) याद करते हैं, कि एक 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 
+0

नेस्टेड मॉड्यूल सही समझ में आते हैं। सवाल, हालांकि, नेस्टेड मॉड्यूल * हस्ताक्षर * के बारे में पूछ रहा है। –

+0

माइकल, आप सवाल पूछने के लिए प्रतीत होता है। नेस्टेड मॉड्यूल के निर्णायक लाभ नेस्टेड मॉड्यूल हस्ताक्षर की आवश्यकता बन जाते हैं। – nlucaroni

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