प्रोग्रामिंग भाषाओं में, क्लोजर एक लोकप्रिय और अक्सर वांछित विशेषता है। विकिपीडिया कहता है (जोर मेरा):
कंप्यूटर विज्ञान में, एक क्लोजर (...) एक फ़ंक्शन है जो उस फ़ंक्शन के गैर-स्थानीय चर के लिए संदर्भित वातावरण के साथ है। एक क्लोजर एक फ़ंक्शन को इसके तत्काल शाब्दिक दायरे के बाहर चर का उपयोग करने की अनुमति देता है।
तो एक बंद अनिवार्य रूप से एक (अनाम?) फ़ंक्शन मान है जो अपने स्वयं के दायरे से बाहर चर का उपयोग कर सकता है। मेरे अनुभव में, इसका मतलब है कि यह उन वैरिएबल तक पहुंच सकता है जो इसके परिभाषा बिंदु पर दायरे में हैं।
व्यवहार में, अवधारणा का विचलन प्रतीत होता है, हालांकि, कम से कम कार्यात्मक प्रोग्रामिंग के बाहर। अलग-अलग भाषाएं अलग-अलग शब्दार्थों को लागू करती हैं, यहां तक कि उन पर शब्दकोषों के युद्ध भी प्रतीत होते हैं। कई प्रोग्रामर्स को यह पता नहीं लगता है कि क्लोजर क्या हैं, उन्हें अनाम कार्यों की तुलना में थोड़ा अधिक देखना।
इसके अलावा, बंद लागू करते समय बड़ी बाधाएं मौजूद हैं। सबसे उल्लेखनीय, जावा 7 उन्हें शामिल करने वाला था लेकिन इस सुविधा को भविष्य के रिलीज पर वापस धकेल दिया गया था।
क्यों एहसास करने के लिए (समझने के लिए) और क्यों बंद कर रहे हैं? यह बहुत व्यापक है और एक प्रश्न अस्पष्ट है, इसलिए मुझे इन परस्पर प्रश्नों के साथ अधिक ध्यान केंद्रित करने दें:
- क्या सामान्य अर्थ औपचारिकताओं (छोटे-कदम, बड़े-कदम, ...) में अभिव्यक्त होने वाली समस्याएं हैं?
- क्या मौजूदा प्रकार के सिस्टम क्लोजर के अनुकूल नहीं हैं और इन्हें आसानी से बढ़ाया नहीं जा सकता है?
- क्या यह एक पारंपरिक, स्टैक-आधारित प्रक्रिया अनुवाद के अनुरूप बंद करने के लिए समस्याग्रस्त है?
ध्यान दें कि प्रश्न सामान्य रूप से ज्यादातर प्रक्रियात्मक, वस्तु-उन्मुख और स्क्रिप्टिंग भाषाओं से संबंधित है। जहाँ तक मुझे पता है, कार्यात्मक भाषाओं में कोई समस्या नहीं है।