नक्शा फ़ंक्शन वास्तव में संग्रह के प्रत्येक ज्ञापन पर मैप किए गए फ़ंक्शन को नहीं चलाता है। बल्कि यह एक 'आलसी-विपक्ष' सेल देता है। यह आपके क्लासिक सिंगल लिंक्ड लिस्ट की तरह एक बहुत ही महत्वपूर्ण अंतर के साथ दिखता है, प्रत्येक सेल में डेटा की गणना की जाती है जब इसे परिभाषित करने के समय नहीं पढ़ा जाता है (यह परिणाम निश्चित रूप से बाद में पढ़ने के लिए संग्रहीत होता है)। इसलिए फ़ंक्शन वास्तव में चलाने के लिए आपको फ़ंक्शन चलाने के परिणाम को पढ़ना होगा। क्योंकि इस मामले में आप समारोह केवल कि यह भाग गया clojure कहा जाता है के लिए एक महान आवरण समारोह प्रदान करता है के परिणाम के बारे देखभाल न
(dorun .... insert your map here ....)
कि मानचित्र का निर्माण करेगा, परिणाम पढ़ सकते हैं और तुरंत उन्हें बाहर भंडारण स्मृति बर्बाद कर के साथ बाहर फेंक बाद में उन्हें।
यदि आप ऐसे परिणामों के साथ फ़ंक्शन मैप करते हैं जहां आप रखना चाहते हैं तो इसके बजाय doseq का उपयोग करें।
स्रोत
2009-07-23 18:20:10
विस्तृत उत्तर के लिए धन्यवाद। क्या सभी सूची abstractions आलसी हैं? मुझे कैसे पता चलेगा कि कौन से हैं और कौन से नहीं हैं? – unj2
मेरा मानना है कि वे सभी रिवर्स को छोड़कर हैं, हालांकि वैक्टरों में एक (आरसीईसी [1 2 3]) फ़ंक्शन है जो अंत में शुरू होने वाला एक सेक बनाता है जो आम तौर पर उस समस्या को हल करता है। –