में मॉड्यूलर प्रोग्रामिंग मुझे कुछ ऐसा मिला जो मुझे ocaml
प्रोजेक्ट पर काम करते समय वास्तव में समझ में नहीं आता है।ओकंपल
मान लीजिए कि मैं ओसीएमएल मानक पुस्तकालय के Array
और List
मॉड्यूल का उपयोग कर रहा हूं। वे दोनों length
फ़ंक्शन को लागू करते हैं लेकिन विभिन्न प्रकार हैं। List
मॉड्यूल में, यह अपने प्रकार है:
length: a' list -> int
और Array
मॉड्यूल में, यह प्रकार है:
length: a' array -> int
लेकिन तब मैं तुम्हें एक ही मॉड्यूल मैं था दोनों में मॉड्यूल का उपयोग करना चाहता था , को लागू करने open
कीवर्ड के माध्यम से:
open List
open Array
मैं जब एक पर length
फ़ंक्शन का उपयोग करने की कोशिश की सूची, संकलन के दौरान मुझे एक प्रकार की त्रुटि थी।
चूंकि ओकैमल एक मजबूत स्थाई रूप से टाइप की गई भाषा है, इसलिए मुझे आश्चर्य है कि क्यों संकलक को पता नहीं था कि मैं सूची मॉड्यूल का लम्बा कार्य चाहता था क्योंकि मैंने घोषणा की कि मैं दोनों का उपयोग कर रहा था।
"मुझे आश्चर्य है कि क्यों संकलक को पता नहीं था कि मैं सूची मॉड्यूल का लम्बा कार्य चाहता था क्योंकि मैंने घोषणा की थी कि मैं दोनों का उपयोग कर रहा था" हां, लेकिन 'मजेदार एस -> लंबाई एस' का प्रकार क्या होगा तब यह संदर्भ? –
jrouquie के उत्तर के आधार पर, यह 'ए' सरणी होगा -> int' –
बिल्कुल, लेकिन एक अनुमानित ओकैमल कंपाइलर के मामले में अनुमान लगाने की कोशिश की गई, ओकैमल प्रकार प्रणाली में कोई भी सामान्य प्रकार नहीं होगा समारोह के लिए। आपको इस परेशानी के लिए हास्केल के समाधान से रूचि हो सकती है, कक्षाएं टाइप करें: http://www.haskell.org/tutorial/classes.html –