मैं हैकेल सीख रहा हूं, और मुझे कई हस्केल अभिव्यक्तियों को मानसिक रूप से पार्स करने में बहुत कठिनाई है।मनमाने ढंग से हैकेल अभिव्यक्तियों को स्वचालित रूप से कैसे संश्लेषित करें?
बेशक, मुझे उम्मीद है कि, पर्याप्त अभ्यास के साथ, मानसिक रूप से पार्सिंग हैकेल दूसरी प्रकृति बन जाएगी, लेकिन इस बीच, मैं जो कुछ भी आया हूं उसे समझने के लिए, मैं कुछ स्वचालित तरीका ढूंढना चाहता हूं एक मनमाना "मानक हैकेल" का अनुवाद करें अभिव्यक्ति जिसमें एक "संदिग्ध" उप-अभिव्यक्ति आवश्यक कोष्ठक पेश करके समाप्त कर दी गई है।
उदाहरण के लिए, यह अभिव्यक्ति
f g h i
अनुवाद होगा ...
((f g) h) i
..., या
a -> b -> c -> d
में ...
a -> (b -> (c -> d))
में
..., आदि
अधिमानतः, यह एक ऐसा उपकरण होगा जो मैं अपने फोन से एक्सेस कर सकता हूं, क्योंकि मैं एक उचित कंप्यूटर से हैकेल पर अपने अधिकांश पढ़ने को करता हूं।
बेशक, ऐसी कोई उपकरण संभवतः अज्ञात स्थिरता और संबद्धता का कस्टम ऑपरेटरों के साथ काम कर सकता है। "मानक हैकेल" से मेरा मतलब है कि प्रीलूड और मानक हैकेल लाइब्रेरी में परिभाषित सामग्री।
मैं "पूर्वता नियमों के अभाव में अस्पष्ट" के लिए आशुलिपि के रूप में उपयोग कर रहा हूँ "अस्पष्ट" यहाँ। जैसे 2 + 3 * 5
संदिग्ध है जब तक कुछ प्राथमिकता नियम है जो इस सवाल को सुलझता है कि दोनों में से कौन से संचालन पहले किए जाएंगे।
मैं अपने _phone_ पर कुछ भी के बारे में सोच नहीं कर सकते, लेकिन वहाँ कुछ बहुत सरल चीजें आप GHCi – Alec
खैर में कर सकते हैं, [Haskell-src-exts] (http: //hackage.haskell। संगठन/पैकेज/हैकेल-src-exts-1.18.2/डॉक्स/भाषा-हास्केल-एक्स्ट्स.html) पूरी तरह से अस्पष्ट पार्स पेड़ प्राप्त करना और इसे प्रिंट करना आसान बनाता है। लेकिन यह वास्तव में पठनीय नहीं है। एक बार जब आपने इसे इंस्टॉल किया है तो ghci से '(fmap। Fmap। Fmap) (const()) (parseFile" foo.hs ") आज़माएं। –
@ एलेक: मैं ghci में वास्तव में क्या कर सकता हूं? (फोन के बारे में: यह केवल एक वरीयता थी, और उस पर हल्का था, अगर इस मामले में कोई विकल्प था, यदि वहां नहीं है, तो मैं खुशी से ghci के लिए व्यवस्थित रहूंगा।) – kjo