मैं एक सरल, प्रूफ-ऑफ-कॉन्सेप्ट एप्लिकेशन (REPL) बनाना चाहता हूं जो एक नंबर लेता है और फिर उस नंबर पर कमांड प्रोसेस करता है।
उदाहरण: मैं 1 से शुरू करता हूं। फिर मैं " add 2
" लिखता हूं , यह मुझे 3. लिखता है। फिर मैं " multiply 7
" लिखता हूं , यह मुझे 21 देता है। फिर मैं जानना चाहता हूं कि क्या यह प्रधान है, इसलिए मैं " is prime
" लिखता हूं (वर्तमान संख्या पर - 21), यह मुझे असत्य देता है। " is odd
" मैं मुझे सच दे दूँगा। और इसी तरह।
अब, कुछ आदेशों के साथ एक सरल अनुप्रयोग के लिए, यहां तक कि एक साधारण भी कमांडों switch
को संसाधित करने के लिए करेगा। लेकिन अगर मैं विस्तार चाहता हूं, तो मुझे कार्यक्षमता को लागू करने की आवश्यकता कैसे होगी? क्या मैं कमांड पैटर्न का उपयोग करता हूं? क्या मैं भाषा के लिए एक साधारण पार्सर / दुभाषिया का निर्माण करता हूं? क्या होगा अगर मुझे अधिक जटिल कमांड चाहिए, जैसे " multiply 5 until >200
"? इसे फिर से जोड़ने के बिना इसे बढ़ाने के लिए एक आसान तरीका क्या होगा (नए कमांड जोड़ें)?
संपादित करें: कुछ चीजों को स्पष्ट करने के लिए, मेरा अंतिम लक्ष्य वुल्फरामअल्फा के समान कुछ बनाना नहीं होगा, बल्कि एक सूची (संख्याओं) के प्रोसेसर के रूप में होगा। लेकिन मैं पहले (सिंगल नंबरों पर) धीरे-धीरे शुरू करना चाहता हूं।
मैं एक तरह से कुछ को ध्यान में रख रहा हूँ जिस तरह से हास्केल का उपयोग सूचियों को संसाधित करने के लिए किया जाएगा, लेकिन एक बहुत ही सरल संस्करण। मैं सोच रहा था कि क्या कमांड पैटर्न (या समतुल्य) जैसी कोई चीज पर्याप्त होगी, या अगर मुझे अपने लक्ष्यों को प्राप्त करने के लिए एक नई मिनी-भाषा और एक पार्सर बनाना होगा?
Edit2: सभी प्रतिक्रियाओं के लिए धन्यवाद, सभी मेरे लिए बहुत मददगार रहे हैं, लेकिन इमाम करीम ने मेरी सबसे ज्यादा मदद की है, इसलिए मैंने इसे उत्तर के रूप में चुना है। एक बार फिर धन्यवाद!