मैं ओकैमल मॉड्यूल के साथ बिल्कुल नया हूं और मैंने "इन" और "ओपन" दोनों को संयोजित किए बिना अपने मॉड्यूल का उपयोग करने में कामयाब नहीं रहा है। मैंने सफलता के बिना, एक अलग .mli फ़ाइल में हस्ताक्षर डालने का प्रयास किया है।ओकैमल मॉड्यूल: शामिल और खोलें?
नीचे मैं एक न्यूनतम (नहीं) उदाहरण काम कर, कि मैं
ocamlc -o main Robot.ml main.ml
साथ संकलित करने के लिए क्या केवल "खुला" का उपयोग करने के लिए करने के लिए मैं क्या करने की जरूरत कोशिश कर रहा हूँ संकेत दिया हूँ, या केवल " शामिल हैं ", लेकिन उनमें से दोनों नहीं?
फ़ाइल "Robot.ml":
module type RobotSignature =
sig
val top: unit -> unit
end
module Robot =
struct
let top() =
begin
Printf.printf "top\n"
end
(* Should not be visible from the 'main' *)
let dummy() =
begin
Printf.printf "dummy\n"
end
end
फ़ाइल "main.ml" (काम नहीं कर रहा):
open Robot;;
top();
फ़ाइल "main.ml" (काम):
include Robot;;
open Robot;;
top();
मुझे लगता है कि आप अपने प्रश्नों के उत्तर की है। तुम भी के बारे में [संकलन इकाइयों] पढ़ने के लिए (http://caml.inria.fr/pub/docs/manual-ocaml/manual020.html) कर सकते हैं। लेकिन कृपया एक बार जब आप समझ जाएंगे कि 'खुला' क्या करता है। इसका उपयोग न करें, यह आपके कोड को समझने में काफी कठिन बनाता है। –
वैसे मैं आम तौर पर सहमत हूं लेकिन उस मामले में उद्देश्य शुरुआती लोगों को मूल प्रोग्रामिंग (विशेष रूप से, लेकिन ओकैम तक ही सीमित नहीं) के लिए एक सरल "रोबोट लाइब्रेरी" प्रदान करना है। तो मैं जितना संभव हो Robot.top() वाक्यविन्यास से बचना पसंद करेंगे। –
खैर मुझे लगता है कि यह वास्तव में यह बहुत ज्यादा understable शुरुआती वस्तु वे स्पष्ट पर कार्य कर रहे हैं प्रदान करने के लिए होगा। वैसे भी तुम भी की के प्रलेखन पर एक नज़र है करने के लिए चाहते हो सकता है [खुला] (http://caml.inria.fr/pub/docs/manual-ocaml/manual019.html#@manual.kwd170) और [शामिल] (http://caml.inria.fr/pub/docs/manual-ocaml/manual019.html#@manual.kwd171)। –