फ़ंक्शन मानों और कॉल-बाय-वैल्यू मूल्यांकन का प्रतिनिधित्व करने के लिए क्लोजर का उपयोग करके एक मानक कार्यान्वयन रणनीति की पसंद पर निम्नलिखित सभी टिप्पणियों का प्रीमियर किया जाता है:
शुद्ध लैम्ब्डा कैलकुलस के लिए, कचरा संग्रहण आवश्यक नहीं है। ऐसा इसलिए है क्योंकि ढेर में चक्रों को बनाना संभव नहीं है: प्रत्येक नव-आबंटित मूल्य में केवल पहले से आवंटित मूल्यों के संदर्भ हो सकते हैं, और इसलिए मेमोरी ग्राफ़ एक डीएजी बनाता है - इसलिए संदर्भ गिनती स्मृति का प्रबंधन करने के लिए पर्याप्त है।
अधिकांश कार्यान्वयन दो कारणों से संदर्भ गिनती का उपयोग नहीं करते हैं।
- वे पॉइंटर प्रकार (जैसे,
ref
एमएल में टाइप कंस्ट्रक्टर) का समर्थन करते हैं, और ढेर में सही चक्र का गठन किया जा सकता है।
- संदर्भ गणना कचरा संग्रहण की तुलना में बहुत कम कुशल है, क्योंकि
- यह संदर्भ मायने रखता है, और रखने के लिए बहुत अधिक अतिरिक्त स्थान की आवश्यकता है
- गणना को अद्यतन करना आमतौर पर व्यर्थ काम है, और
- काउंट्स के लिए अद्यतन लेखन विवाद का एक गुच्छा बनाते हैं जो समानांतर प्रदर्शन को मारता है।
रेखीय रूप से टाइप की गई भाषाएं संदर्भ गणना को समाप्त कर सकती हैं (अनिवार्य रूप से क्योंकि गिनती 0-1 हैं: या तो मूल्य में इसका एक संदर्भ है या यह मृत है और इसे मुक्त किया जा सकता है)।
हालांकि, स्टैक आवंटन अभी भी पर्याप्त नहीं है। ऐसा इसलिए है क्योंकि फ़ंक्शन मानों को बनाना संभव है, जो मुक्त चर को संदर्भित करता है (यानी, हमें फ़ंक्शन क्लोजर को लागू करने की आवश्यकता है), यदि आप स्टैक पर चीजों को आवंटित करते हैं, तो लाइव मान को मृत मानों के साथ इंटरलेय किया जा सकता है, और यह गलत असममितता का कारण होगा। अंतरिक्ष उपयोग।
आप एक "स्पेगेटी स्टैक" के साथ एक स्टैक को बदलकर सही एसिम्पोटिक्स प्राप्त कर सकते हैं (यानी, ढेर को एक लिस्ट में लिंक की गई सूची के रूप में लागू करें, ताकि आप आवश्यकतानुसार मृत फ़्रेमों को काट सकें)।
यदि आप एक वास्तविक स्टैक अनुशासन चाहते हैं, तो आप "ऑर्डर किए गए तर्क" (अनिवार्य रूप से रैखिक प्रकार के माइनस एक्सचेंज) के आधार पर टाइप सिस्टम का उपयोग कर सकते हैं।