पढ़ना जीएचसी कोर


193

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

जीएचसी कोर को पढ़ने के लिए क्या दस्तावेज उपलब्ध है?

यहाँ मैंने अभी तक क्या पाया है:



skillsmatter.com/skillscasts/… उपयोगी भी हो सकता है।
एरिक कपलुन

जवाबों:


272

जीएचसी कोर सिस्टम एफसी भाषा है जिसमें सभी हास्केल का अनुवाद किया गया है। कोर के लिए (लगभग) व्याकरण निम्नलिखित द्वारा दिया गया है:

यहां छवि विवरण दर्ज करें

कोर सरल और बेहतर ज्ञात सिस्टम एफ से निकटता से संबंधित है । कोर स्तर पर GHC द्वारा किए जाने वाले सभी परिवर्तन प्रदर्शन को बेहतर बनाने के लिए इस कोर प्रतिनिधित्व के प्रकार-संरक्षण रिफ्लेक्टर हैं। और, इतनी अच्छी तरह से ज्ञात नहीं है, आप जीएचसी को प्रोग्राम करने के लिए सीधे कोर में लिख सकते हैं।

जीएचसी कोर कम्पाइलर पाइपलाइन में फिट बैठता है (जैसा कि यह 2002, संस-एलएलवीएम और सीएमएम में था):

यहां छवि विवरण दर्ज करें

जीएचसी कोर के बारे में जानने के लिए प्राथमिक दस्तावेज हैं:

संबंधित सामग्री जो समझने में सहायता कर सकती है:

  • GHC -fext कोर उत्पादन
  • मैंने जीएचसी स्रोत को पढ़कर कोर सीखने में बहुत समय बिताया। कुछ का वर्णन मेरी स्नातक थीसिस में 2002 से, पृष्ठ 16 से किया गया है।
  • जीएचसी-कोर टूल का उपयोग करने से , कोर को एक प्रारूप में उत्पन्न करने के लिए जो मुझे अच्छा लगता है।

बदले में एसटीजी कोड में कोर का अनुवाद किया जाता है, जो कुछ इस तरह दिखता है:

यहां छवि विवरण दर्ज करें

कोर में मजाकिया नाम "जेड-एन्कोडिंग" में एन्कोड किए गए हैं:

यहां छवि विवरण दर्ज करें

जीएचसी कोर के प्रकार और प्रकार (टॉल्मच के पेपर से):

यहां छवि विवरण दर्ज करें

अंत में, जीएचसी के प्राइमॉप्स नियमित रूप से जीएचसी कोर आउटपुट में दिखाई देते हैं, जब आपने अपने हास्केल को उन बुनियादी निर्देशों के लिए अनुकूलित किया है जिनके बारे में जीएचसी को पता है। पहले से संसाधित फ़ाइल में कोर कार्यों के सेट के रूप में प्राइमॉप सेट दिया जाता है


61
आपके द्वारा दिया गया हर एक उत्तर हमेशा हास्यास्पद तरीके से पूरा होता है। एक और अप-वोट करें और इसे बनाए रखें; मैं झुक रहा हूँ ढेर।
रॉबर्ट मसायोली

3
एससी के माध्यम से डॉन और सामान्य हास्केल समुदाय द्वारा जारी सीसी-विकी प्रलेखन की मात्रा चौंका देने वाली है। अच्छा क्यू और ए रखें, सब लोग!
डैन बर्टन

4
मुझे पता है कि इसका उल्लेख किया गया है, लेकिन मुझे लगता है कि उत्तर में ghc-core की उपयोगिता पर बल दिया जाना चाहिए।
निकिता वोल्कोव

24

एक टिप: यदि आप विकल्प के -ddump-simplसाथ एक साथ उपयोग किए जाने वाले एनोटेशन और कॉर्केशन की परवाह नहीं करते हैं -dsuppress-all। कोर आउटपुट बहुत अधिक पठनीय होना चाहिए।


5
-dsuppress-allवास्तव में उपयोगी है। आप भी उपयोग कर सकते हैं -dsuppress-coercionsयदि आप केवल जातियों से छुटकारा पाना चाहते हैं (उपयोगी जब बहुत सारे न्यूटाइप्स होते हैं)।
टिब्बे

8

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

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


एसटीजी कोर की तुलना में बहुत निचला स्तर है। संकलन पाइपलाइन है: हास्केल -> कोर -> एसटीजी -> सी-- -> मशीन कोड
अकांगका

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.