2013-03-23 5 views
33

मेरा सवाल यह है कि मानक एमएल मॉड्यूल सिस्टम और ओकैम मॉड्यूल सिस्टम के बीच कोई अंतर है? क्या OCaml मज़दूरों, शिलालेख आदि के सभी समर्थन है ... कि एसएमएल है?मानक एमएल के मॉड्यूल सिस्टम और ओकैम मॉड्यूल सिस्टम के बीच क्या अंतर है (यदि कोई है)?

उत्तर

46

कुछ भिन्नताएं हैं, साथ ही साथ अर्थात्।

सुविधाएँ एसएमएल का समर्थन करता है, लेकिन नहीं OCaml:

  • पारदर्शी हस्ताक्षर जोड़ना
  • मॉड्यूल स्तरीय let
  • सममित बंटवारे की कमी प्रकारों पर functors के लिए
  • वाक्यात्मक चीनी और महत्व देता

विशेषताएं ओकैमल 4 में एसएमएल नहीं है:

  • उच्च क्रम functors
  • पुनरावर्ती मॉड्यूल
  • स्थानीय मॉड्यूल
  • नेस्टेड हस्ताक्षर प्रथम श्रेणी के रूप में
  • मॉड्यूल को महत्व देता
  • सामान्य मॉड्यूल बंटवारे (sig with module A = M)
  • module type of

कई एसएमएल कार्यान्वयन इनमें से कुछ एक्सटेंशन के रूप में प्रदान करते हैं, हालांकि: उदा। उच्च ऑर्डर मल्टीक्टर (एसएमएल/एनजे, मॉस्को एमएल, एलिस एमएल), स्थानीय और प्रथम श्रेणी के मॉड्यूल (मॉस्को एमएल, एलिस एमएल), मॉड्यूल शेयरिंग (एसएमएल/एनजे, एलिस एमएल), नेस्टेड हस्ताक्षर (मॉस्को एमएल, एलिस एमएल) , और रिकर्सिव मॉड्यूल (मॉस्को एमएल)।

शब्दार्थ के लिहाज से, सबसे बड़ा अंतर प्रकार तुल्यता के उपचार में है, विशेष रूप से functors के संबंध में:

  • एसएमएल में, functors उत्पादक कर रहे हैं, कि करने के लिए दो बार एक ही functor लागू करने का अर्थ है जो एक ही तर्क हमेशा ताजा प्रकार पैदा करता है।

    संपादित करें: ओकैम 4 ने वैकल्पिक रूप से मल्टीक्टर बनाने के लिए क्षमता को जोड़ा।

  • OCaml में, functors अनुप्रयोगी कर रहे हैं, जिसका अर्थ है कि एक ही functor ठीक उसी तर्क (प्लस अतिरिक्त वाक्यात्मक प्रतिबंध) करने के लिए दो बार आवेदन करने के बराबर प्रकार reproduces। यह अर्थशास्त्र अधिक लचीला है, लेकिन अमूर्तता भी तोड़ सकता है (उदाहरण के लिए हम this paper, धारा 8 में दिए गए उदाहरण देखें)।

  • ओकैमल में हस्ताक्षर की पूरी तरह से वाक्य रचनात्मक धारणा है, जिसका अर्थ है कि कुछ प्रकार के समकक्ष प्रकार प्रणाली द्वारा व्यक्त नहीं किए जा सकते हैं, और चुपचाप गिराए गए हैं या टूटा हुआ है (उदाहरण के लिए this bug एक आश्चर्यजनक उदाहरण के रूप में देखें)।

    संपादित: OCaml 4.02 "मॉड्यूल उपनाम" है, जो बग संदर्भित में विशिष्ट उदाहरण ठीक करने के लिए होने के लिए एक विशेष अर्थ विज्ञान जोड़ा है, लेकिन वाक्यात्मक हस्ताक्षर के सामान्य सीमा बनी हुई है।

एक और उल्लेखनीय अंतर यह है कि OCaml के मॉड्यूल प्रकार प्रणाली सार हस्ताक्षर, जो एसएमएल की अनुमति नहीं है की अपनी अनुमति के कारण, अनिर्णनीय हैं (यानी, प्रकार की जाँच समाप्त नहीं हो सकता है) है।

+4

मुझे लगता है कि आपको * भविष्य * मॉड्यूल सिस्टम के बारे में कुछ लेने का मौका लेना चाहिए, या इन फीचर सेटों के तरीके से अधिक सटीक तरीके से मॉड्यूल सिस्टम पर "हालिया" (अधिकांशतः आपका) शोध की उचित शुरुआत मानने के तरीके को और अधिक सटीक तरीके से लेना चाहिए एक एमएल भाषा का पुनरावृत्ति। यह एक * बेहद * दिलचस्प जवाब में एक बहुत ही रोचक जवाब बदल जाएगा। – gasche

+4

मुझे लगता है कि इसके लिए सवाल को पिगबैक करना अनुचित है;)। मेरा व्यक्तिगत उत्तर एफ-आईएनजी मॉड्यूल पेपर I लिंक में जो कुछ भी है, वह बहुत अधिक होगा - यह सभी सूचीबद्ध सुविधाओं को एक स्वच्छ और (काफी) सरल तरीके से (जेनरेटिव और आवेदक दोनों मर्चेंट्स सहित), कम से कम रिकर्सिव मॉड्यूल को कम करता है। उन लोगों के लिए मैं इतना यकीन नहीं कर रहा हूँ। ओकैमल के रिकर्सिव मॉड्यूल बहुत ही अनुकूल हैं और मेरे स्वाद के लिए सीमित हैं, लेकिन अंततः एमएल मॉड्यूल बनाने के एक बड़े हिस्से को छोड़ने के लिए एक व्यापक दृष्टिकोण होगा, जैसा कि हम मिक्सएमएल पेपर में वर्णन करते हैं। जूरी अभी भी इस बात से बाहर है कि यह इसके लायक है या नहीं। –

+0

@AndreasRossberg मुझे यकीन नहीं है कि मिक्सएमएल के संदर्भ में प्रमुख भाग एमएल मॉड्यूल को छोड़कर आप क्या मतलब रखते हैं, जिस पेपर में आपने उल्लेख किया है कि एमएल मॉड्यूल को मिक्सएमएल स्पेक्ट्रम पर अंतिम बिंदु के रूप में देखा जा सकता है। (मुझे सही करें यदि मैं गलत हूं, मॉड्यूल बनाने के लिए मूल विचार पैरामीटर के बजाए कंपन द्वारा किया गया था) – fedvasu

2

अर्थशास्त्र के लिए, एंड्रियास रॉसबर्ग द्वारा उपरोक्त एक बेहतर और विस्तृत उत्तर दिया गया है। हालांकि, सिंटैक्स this site से संबंधित हो सकता है कि आप जो खोज रहे हैं।

+4

और यह साइट एंड्रियास रॉसबर्ग का काम भी है! – fedvasu

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