दुर्भाग्यवश, आप इसे TH
अकेले नहीं कर सकते हैं। Haskell मॉड्यूल को TH AST
के रूप में पार्स करने के लिए haskell-src-meta
आज़माएं।
हालांकि मॉड्यूल को लोड करने के लिए Q
मोनैड की आईओ सुविधाओं की आवश्यकता होगी।
संदर्भ https://ghc.haskell.org/trac/ghc/ticket/9699#ticket कृपया वर्तमान किसी न किसी तरह कल्पना को देखने के लिए
(1) ModuleInfo बढ़ाएँ ModuleInfo [मॉड्यूल] [नाम], जहां [मॉड्यूल] अभी भी आयात है (reifyModule से प्राप्त) सूची और [नाम] में निर्यात किए गए नामों की मॉड्यूल की सूची शामिल है।
(2) इस मॉड्यूल :: क्यू मॉड्यूल वर्तमान मॉड्यूल का उत्पादन जोड़ें।
(3) शीर्ष लेवल नाम :: क्यू [नाम] वर्तमान मॉड्यूल में बाध्य शीर्ष-स्तर के नामों (दोनों निर्यात और गैर-निर्यातित) की एक सूची का उत्पादन करते हैं जो सुधार के लिए दृश्यमान होंगे।
(4) इस संदर्भ में सुधार करने के लिए दिखाई देने वाले गैर-शीर्ष-स्तर (नेस्टेड) नामों की सूची तैयार करने वाले नेस्टेड नाम :: क्यू [नाम] (बेहतर नाम की आवश्यकता में) जोड़ें।
(5) उपलब्ध होने पर मौजूदा स्प्लिसिंग संदर्भ से तुरंत जुड़े नामों की एक सूची तैयार करने वाले माता-पिता :: क्यू [नाम] (एक बेहतर नाम की आवश्यकता में) जोड़ें। उदाहरण के लिए, foo, bar :: $ (typeSplice) देखेंगे [foo, bar], foo = $ (exprSplice) [foo] देखेंगे, और $ (topLevelDecSplice) देखेंगे []।
(6) वैकल्पिक जोड़ें isTopLevel :: नाम -> क्यू बूल यह पता लगाने के लिए कि क्या नाम शीर्ष स्तर (वर्तमान मॉड्यूल का) है? ऐसा कुछ वैकल्पिक रूप से topLevelNames के माध्यम से खोज कर पूरा किया जा सकता है।
स्रोत
2016-07-26 18:15:21
मैं निश्चित रूप से निश्चित हूं कि आप केवल TH के साथ ऐसा नहीं कर सकते हैं, लेकिन आप एक हैस्केल मॉड्यूल को TH एएसटी के रूप में पार्स करने के लिए 'हैकेल-src-meta' का उपयोग कर सकते हैं। – user2407038
क्या मॉड्यूल को लोड करने के लिए 'क्यू' मोनैड की आईओ सुविधाओं का उपयोग करने की आवश्यकता होगी, और फिर उसे 'हैकेल-src-meta'' पर भेजें? उफ़। साथ ही, विभाजन को अलग-अलग दायरे में उपयोग करने के लिए यह नाम असंबद्ध नहीं कर सकता है। –
हां, आपको वास्तव में फ़ाइल को पढ़ने के लिए आईओ का उपयोग करने की आवश्यकता है। मुझे यकीन नहीं है कि मैं आपका दूसरा कथन समझता हूं - यदि आपको * सभी * नाम मिल रहे हैं तो आपको असंबद्ध करने की आवश्यकता क्यों होगी? आप एक फीचर अनुरोध के लिए टिकट खोल सकते हैं, मुझे संदेह है कि अंतर्निहित तंत्र जो कि शक्तियों को शक्ति देता है, वैसे भी सभी इन-स्कोप नाम उपलब्ध हैं। – user2407038