क्यू: elisp में नाम स्थान क्यों नहीं है, और हम उन्हें कैसे प्राप्त कर सकते हैं?
Elisp में वैश्विक एक के अलावा अन्य नाम स्थान नहीं हैं, जिसके कारण सभी वैश्विक कार्यों, चर, और स्थिरांक को एक अद्वितीय उपसर्ग के साथ कोडित करने की परंपरा है।
झुंझलाहट कारक के अलावा, यह मुझे 1 दिए गए एक उबाल देने वाले मुद्दे के रूप में भी हमला करता है) 1 महान पुस्तकालयों और पैकेजों की कभी-बढ़ती हुई संख्या, और 2) विरासत कार्यों और चर के निरंतर अस्तित्व जो या तो उपसर्ग सम्मेलन का सम्मान नहीं करते हैं, या पर्याप्त रूप से निष्क्रिय हैं कि वास्तव में एक अच्छा उपसर्ग विकल्प नहीं है जो वे उपयोग कर सकते हैं। इसका यह भी मतलब है कि समय-समय पर प्रयास पुराने कोड युक्तिसंगत बनाने के लिए (से संक्रमण के साथ के रूप में cl
करने के लिए cl-lib
) काम का एक गैर तुच्छ राशि है। (हालांकि मुझे सफाई के लिए खुशी है, मैं अभी भी हर बार एक आंसू बहाता हूं जैसे मैं कुछ लिखता हूं cl-find
)।
मैं यह देखने के लिए इधर-उधर घूमता रहा कि क्या मुझे पता चल सकता है कि कुछ दशकों के उपयोग के बाद भी एलिस्प नाम की जगह क्यों नहीं है, लेकिन मामूली फसल पर थोड़ा आश्चर्यचकित था। नामस्थान पर विकि पृष्ठ काफी कम है। निक फेरियर के पास इस मुद्दे का एक लंबा इलाज है, और इस पर emacs-devel पर काफी हालिया धागा है । 2010 से एक पुराना स्टैक ओवरफ्लो धागा है जो नाम स्थान को लागू करने के लिए मैक्रोज़ का उपयोग करने की संभावना पर चर्चा करता है; मैक्रो दृष्टिकोण का एक और उदाहरण यहां पाया जा सकता है । कम से कम कुछ कार्यान्वयन ( यहां और यहां , बाद के विवरण के साथ) यहां हैं) वहाँ से बाहर है, लेकिन वे कुछ वर्षों के लिए बहुत गतिविधि नहीं देखी है, और मैं किसी भी पुस्तकालयों में नहीं है जो उनका उपयोग करते हैं।
मुझे लगता है कि, अगर नामस्थान जोड़ना आसान था, तो यह पहले से ही किया जाएगा। इसलिए:
- नाम स्थान को अनिवार्य रूप से जोड़ने के लिए तकनीकी बाधाएं क्या हैं?
- क्या नामस्थान जोड़ने से मौजूदा कोड बहुत टूट जाएगा?
- क्या यह कार्यशीलता कुछ ऐसी है जिसे जैविक रूप से स्वयं को बदलना है (दुभाषिया में परिवर्तन), या इसे वास्तव में मैक्रोज़ के शीर्ष पर बनाया जा सकता है?