2014-11-01 7 views
9

इदरिस क्यों आवश्यकता है कि कार्यों mutual साथ घोषित उनकी परिभाषा और आपसी प्रत्यावर्तन के क्रम में दिखाई?इडिस को आपसी आवश्यकता क्यों है?

मैं इदरिस कार्यों के बीच निर्भरता विश्लेषण की एक पहली पास प्रदर्शन करने की संभावना है, और उन्हें स्वचालित रूप से पुन: व्यवस्थित होगा। मैंने हमेशा विश्वास किया है कि हास्केल ऐसा करता है। इडिस में यह क्यों संभव नहीं है?

उत्तर

4

tutorial में यह कहते हैं (जोर मेरा):

सामान्य, कार्यों और डेटा प्रकार में, उपयोग करने से पहले परिभाषित किया जाना चाहिए के बाद से निर्भर प्रकार कार्यों प्रकार के हिस्से के रूप में प्रदर्शित करने की अनुमति है, और उनकी कमी टाइप प्रकार को प्रभावित करने के लिए व्यवहार। हालांकि, इस प्रतिबंध एक आपसी ब्लॉक है, जो किया जा एक साथ परिभाषित करने के लिए डेटा प्रकार और कार्यों की अनुमति देता है का उपयोग करके छूट दी जा सकती।

(AGDA इस प्रतिबंध को भी है, लेकिन अब removed the mutual keyword in favour of giving types then definitions है।)

इस पर विस्तार करने के लिए: आप निर्भर प्रकार है जब, स्वत: निर्भरता विश्लेषण ला हास्केल मुश्किल या असंभव हो सकता है, क्योंकि प्रकार के स्तर पर निर्भरता आदेश मूल्य स्तर पर निर्भरता आदेश से बहुत अलग हो सकता है। हास्केल में यह समस्या नहीं है क्योंकि मान प्रकारों में प्रकट नहीं हो सकते हैं, इसलिए यह केवल निर्भरता विश्लेषण कर सकता है और फिर उस क्रम में टाइप चेक कर सकता है। यह है कि इडिस ट्यूटोरियल टाइपिंग जांच के लिए आवश्यक मानों के कम करने के व्यवहार के बारे में हो रहा है।

मुझे नहीं पता कि समस्या सामान्य रूप से निर्भर प्रकारों के साथ हल हो सकती है (आप एक चीज़ के लिए हिंडली-मिलनर खो देते हैं), लेकिन मुझे लगता है कि यह तब भी प्रभावी नहीं होगा जब यह था।

+0

AGDA अभी भी आप परस्पर पुनरावर्ती परिभाषाओं के बारे में कुछ हद तक स्पष्ट हो सकता है, के बाद से आप उनमें से किसी की परिभाषा देने से पहले एक पारस्परिक रूप से पुनरावर्ती समूह के प्रत्येक सदस्य के प्रकार के हस्ताक्षर देना है की आवश्यकता है। – Cactus

+0

हाँ, एहसास हुआ कि मैं कुछ हद तक वहां था। जवाब अद्यतन किया है। क्यों हास्केल में स्वचालित निर्भरता विश्लेषण करते हैं नहीं, की तरह है, बजाय स्पष्ट प्रत्यावर्तन की आवश्यकता होती है CAML में की तरह, - –

+2

यही कारण है कि इस चुनाव किया गया था की व्याख्या नहीं करता? – jch

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