उदाहरण के लिए,OCaml में शामिल, आवश्यकता और खोलने के बीच क्या अंतर है?
में शामिल हैं: include Ppx_core
खुला: open Core.Std
आवश्यकता होती है: #require "compiler-libs.common"
और उपयोग: वर्तमान में मॉड्यूल के #use "topfind"
उदाहरण के लिए,OCaml में शामिल, आवश्यकता और खोलने के बीच क्या अंतर है?
में शामिल हैं: include Ppx_core
खुला: open Core.Std
आवश्यकता होती है: #require "compiler-libs.common"
और उपयोग: वर्तमान में मॉड्यूल के #use "topfind"
include
re-exports घटकों str ucture: जिस मॉड्यूल में आप हैं, उनमें सभी परिभाषाएं होंगी जो Ppx_core
में हैं।open
टाइपिंग वातावरण में मॉड्यूल directly accessible के घटकों को बनाता है। Core.Std.element
टाइप करने के बजाय आप बस element
टाइप कर सकते हैं।#require
एक Topfind कमांड है जो एक लाइब्रेरी पाता है और इसे लोड करता है, जिससे आपके मॉड्यूल आपके लिए सुलभ हो जाते हैं।#use
व्यवहार करें जैसे कि copying a full file सीधे आपके अपूर्ण में।ध्यान दें कि #
-कीवर्ड OCaml भाषा का हिस्सा नहीं हैं लेकिन उच्चस्तरीय आदेशों हैं: वे अगर आप अपने फ़ाइल को संकलित करने की कोशिश काम नहीं करेगा।
मॉड्यूल परिभाषा में include Module.Name
कथन में Module.Name
नामक मॉड्यूल से सभी परिभाषाएं शामिल होंगी। परिभाषाओं को मोटे तौर पर शामिल किया जाएगा क्योंकि वे प्रतिलिपि बनाये गये थे। यदि include Module.Name
मॉड्यूल प्रकार परिभाषा (उर्फ हस्ताक्षर परिभाषा) के अंदर होता है, तो Module.Name
वैध (एक कंपाइलर के लिए जाना जाता है) मॉड्यूल प्रकार होना चाहिए। इसमें एक मॉड्यूल प्रकार की परिभाषा शामिल होगी जैसा कि यह है (बिना किसी प्रकार की साझाकरण बाधाओं को शामिल किए)।
open Module.Name
बयान दोनों मॉड्यूल कार्यान्वयन और मॉड्यूल हस्ताक्षर में होने वाली है, तो आप एक पूरी तरह से योग्य नामित का उपयोग कर अर्थात Module.Name
उपसर्ग के बिना लघु नाम का उपयोग किए बिना एक Module.Name
की (मान, प्रकार, submodules) परिभाषाओं का उल्लेख करने की अनुमति देगा।
#require
कथन बिल्कुल कोई बयान नहीं है और यह ओकैमल व्याकरण का हिस्सा नहीं है। यह ओकैमल अपूर्ण - इंटरैक्टिव पाश का विशेष निर्देश है। Ipython के समान ही अपने निर्देश हैं। require
निर्देश निर्दिष्ट पैकेज, और इसकी सभी निर्भरताओं को लोड करेगा। इसके अलावा, यह निर्देश मानक ओकैमल अपरिवर्तनीय वितरण का हिस्सा नहीं है, लेकिन topfind
स्क्रिप्ट द्वारा जोड़ा गया है जो ओकम्फिंड टूलकिट का हिस्सा है। #use
निर्देश का उपयोग स्क्रिप्ट को लोड और मूल्यांकन करने के लिए किया जाता है। उदाहरण के लिए #use "topfind"
OCaml मानक लाइब्रेरी फ़ोल्डर से topfind
स्क्रिप्ट लोड और मूल्यांकन करेगा। यह स्क्रिप्ट require
निर्देश पंजीकृत करेगी। #load
और #load_rec
निर्देश भी हैं, जो पैकेज के बजाए अधिक बढ़िया-दानेदार स्तर पर काम करते हैं - ये निर्देश पुस्तकालयों को लोड करने का इरादा रखते हैं।