मैं इस प्रकार रिकर्सिवली दृश्यों परिभाषित करना चाहते:रिकर्सिव अनुक्रम रिसाव स्मृति करें?
let rec startFrom x =
seq {
yield x;
yield! startFrom (x + 1)
}
मुझे यकीन है कि नहीं कर रहा हूँ इस तरह पुनरावर्ती दृश्यों व्यवहार में प्रयोग किया जाना चाहिए। yield!
पूंछ रिकर्सिव होने के लिए दिखाई देता है, लेकिन मुझे 100% निश्चित नहीं है क्योंकि इसे किसी अन्य आईनेमेरेबल के अंदर से बुलाया जा रहा है। मेरे दृष्टिकोण से, कोड प्रत्येक कॉल पर इसे बंद किए बिना IEnumerable का एक उदाहरण बनाता है, जो वास्तव में इस फ़ंक्शन को रिसाव मेमोरी भी बना देगा।
क्या यह कार्य रिसाव स्मृति होगा? उस मामले के लिए यह भी "पूंछ रिकर्सिव" है?
[जोड़ने के लिए संपादित करें]: मैं उत्तर के लिए एनप्रोफ के साथ घूम रहा हूं, लेकिन मुझे लगता है कि एसओ पर रिकर्सिव अनुक्रमों के कार्यान्वयन के संबंध में तकनीकी स्पष्टीकरण प्राप्त करना उपयोगी होगा।
>> "दुर्भाग्य से, मेरे पास कोई प्रोफाइलर अनुभव नहीं है, इसलिए मैं कर सकता हूं अपने आप को जवाब नहीं मिला। " किसी तरह का मजाक? किसी को अनुभव कैसे मिलता है? – user79755
रिकॉर्ड के लिए मैं अभी एनपीआरओफ़ देख रहा हूं, लेकिन आशा है कि एसओ पर एक तेज उत्तर और तकनीकी स्पष्टीकरण प्राप्त हो रहा है। – Juliet