ईश्वर मुझे "कोड गंध" शब्द से नफरत है, लेकिन मैं कुछ और सटीक नहीं सोच सकता।हास्केल राज्य मोनड का उपयोग कोड गंध?
मैं अपने खाली समय संकलक निर्माण, भाषा डिजाइन, और कार्यात्मक प्रोग्रामिंग के बारे में जानने के लिए एक उच्च स्तरीय भाषा & Whitespace को संकलक डिजाइनिंग कर रहा हूँ (संकलक हास्केल में लिखा जा रहा है)।
कंपाइलर के कोड जनरेशन चरण के दौरान, मुझे "राज्य" -श डेटा बनाए रखना है क्योंकि मैं वाक्यविन्यास पेड़ को पार करता हूं। उदाहरण के लिए, प्रवाह-नियंत्रण कथनों को संकलित करते समय मुझे लेबल के लिए अद्वितीय नाम उत्पन्न करने की आवश्यकता होती है (एक काउंटर से उत्पन्न लेबल, अद्यतन, & लौटाया गया है, और काउंटर का पुराना मान कभी भी उपयोग नहीं किया जाना चाहिए)। एक और उदाहरण यह है कि जब मैं सिंटैक्स पेड़ में इन-लाइन स्ट्रिंग अक्षर भरता हूं, तो उन्हें स्थायी रूप से ढेर चर में परिवर्तित करने की आवश्यकता होती है (व्हाइटस्पेस में, तारों को ढेर पर सबसे अच्छी तरह से संग्रहीत किया जाता है)। मैं वर्तमान में इसे संभालने के लिए राज्य मोनैड में संपूर्ण कोड जनरेशन मॉड्यूल को लपेट रहा हूं।
मुझे बताया गया है कि एक कंपाइलर लिखना एक समस्या है जो कार्यात्मक प्रतिमान के लिए उपयुक्त है, लेकिन मुझे लगता है कि मैं इसे उसी तरह डिजाइन कर रहा हूं जिस तरह से मैं इसे सी में डिजाइन करूंगा (आप वास्तव में सी लिख सकते हैं कोई भी भाषा - यहां तक कि हास्केल डब्ल्यू/राज्य मोनैड)।
मैं सीखना चाहता हूं कि हास्केल में कैसे सोचें (बल्कि, कार्यात्मक प्रतिमान में) - सी में हास्केल सिंटैक्स के साथ नहीं। क्या मुझे वास्तव में राज्य मोनैड के उपयोग को खत्म/कम करने की कोशिश करनी चाहिए, या यह एक वैध कार्यात्मक "डिजाइन पैटर्न" है?
WTF मैन, व्हाइटस्पेस ... –
क्या मुझे mips या x86 asm के लिए एक कंपाइलर लिखना चाहिए? यह काफी जटिल होगा। – Cybis
सी ++, साइबिस। 1 999 विनिर्देश। और हम इसे शुक्रवार तक चाहते हैं। –