मैं इस कोड है। कोई विचार क्यों पूंछ रिकर्सन का उपयोग करने के लिए संकलित नहीं किया गया है?एफ # पूंछ पुनरावर्ती कॉल
उत्तर
जहाँ तक मैं कह सकता हूं, collect
फ़ंक्शन वास्तव में पूंछ-पुनरावर्ती है। पहला मामला स्पष्ट रूप से acc
देता है। दूसरा मामला पहले FindSourceFilesForTarget
को आमंत्रित करता है, फिर Set.union
पर कॉल करता है और फिर लौटाता है। आप इसे फिर से लिखने सकता है इस प्रकार है (जो अधिक स्पष्ट रूप से पूंछ-प्रत्यावर्तन से पता चलता):
| hr::tl ->
let sources = FindSourceFilesForTarget hr
let acc = Set.union acc sources
collect tl
क्योंकि यह सिर्फ एक समारोह में ही बुला, संकलक एक पाश में अनुकूलित करता है।
t |> Seq.map FindSourceFilesForTarget |> Set.unionMany
उत्तर के लिए धन्यवाद। साइड प्रश्न के रूप में, यदि यूनियन मैनी का उपयोग करते हैं, तो पाइपलाइन जैसे ही यह उपलब्ध हो जाता है विलय सेट शुरू हो जाता है या जब तक यह पिछले पाइपलाइन चरण ("Seq.map FindSourceFilesForTarget" से सभी आउटपुट एकत्र करता है तब तक प्रतीक्षा करता है)? कारण मैं रिकर्सिव कॉल कर रहा था क्योंकि सेट पर यूनियन करना है क्योंकि वे बहुत सारे डेटा हैं और वहां बहुत सारे डेटा हैं (100 हजारों), इसलिए मैं सभी परिणामों को कैश नहीं करना चाहता था और चाहता था जितनी जल्दी हो सके डुप्लिकेट को हटा दें – phwp
जब 't' एक आलसी डेटा स्रोत (' IENumerable') है तो 'UnionMany' ऑपरेशन को मांग पर पढ़ना चाहिए (और इसलिए 'FindSourceFilesForTarget' भी मांग पर मूल्यांकन किया जाएगा)। तो मुझे लगता है कि इस मामले में, संपूर्ण डेटा सेट को रास्ते में स्मृति में लोड नहीं किया जाएगा। –
- 1. क्या यह कार्यान्वयन पूंछ-पुनरावर्ती
- 2. पूंछ पुनरावर्ती क्रिया OCaml
- 3. मुझे कैसे पता चलेगा एक समारोह एफ # में पूंछ पुनरावर्ती
- 4. पूंछ-एफ वेबब्रोसर में
- 5. एफ # पूंछ-रिकर्सिव
- 6. एफ # निरंतरता के आधार पर पूंछ प्रत्यावर्तन
- 7. यह पूंछ-पुनरावर्ती क्यों नहीं है?
- 8. मैं पूंछ-पुनरावर्ती सूची को कैसे कार्यान्वित कर सकता हूं?
- 9. सी पूंछ कॉल अनुकूलन
- 10. स्प्रिंग AOP पुनरावर्ती कॉल
- 11. पूंछ में -एफ ध्वज क्या करता है?
- 12. एफ पूंछ प्रत्यावर्तन और Seq पुस्तकालय
- 13. एफ #: पारस्परिक रूप से पुनरावर्ती कार्यों
- 14. एफ #
- 15. पूंछ-पुनरावर्ती कार्य भी तेज नहीं होना चाहिए?
- 16. पूर्णांक (स्कैला) के जोड़े की पूंछ-पुनरावर्ती बाध्य धारा?
- 17. ढेर अतिप्रवाह अपवाद है जब पूंछ पुनरावर्ती क्रिया
- 18. पूंछ प्रत्यावर्तन कॉल (सी प्राइमर प्लस किताब उदाहरण)
- 19. एफ #
- 20. क्या फारो पूंछ-कॉल अनुकूलन प्रदान करता है?
- 21. क्या JVM पूंछ कॉल अनुकूलन को रोकता है?
- 22. करता एफ # के साथ TCO (पूंछ कॉल अनुकूलन) करना | मेरी समारोह> Option.bind
- 23. मोनो (2.11) पर एफ # के लिए पूंछ-कॉल-ऑप्टिमाइज़ेशन की वर्तमान स्थिति क्या है?
- 24. क्या MATLAB पूंछ कॉल अनुकूलन करता है?
- 25. क्या फ्रीज पूंछ कॉल अनुकूलन करता है?
- 26. यूनिकोड चरित्र यू -1 एफ 4 ए 9 'पूंछ का पूंछ' इमोजी
- 27. 'पूंछ'
- 28. शॉर्ट सर्किट ऑपरेटरों और पूंछ प्रत्यावर्तन
- 29. क्या विंडोज़ पर पूंछ-एफ के बराबर है?
- 30. क्या यूआरएल से "पूंछ-एफ" करने का कोई तरीका है?
आप कर रहे हैं:
एक से थोड़ा असंबंधित नोट पर, आप भी इस का उपयोग कर मानक पुस्तकालय कार्यों व्यक्त कर सकते हैं: यह (जब आप परावर्तक का उपयोग सी # करने के लिए इसे चालू करने के) कैसे संकलित कोड लग रहा है रिलीज मोड में संकलन? जब तक आप रिहाई मोड में न हों तब तक टेल कॉल को अनुकूलित नहीं किया जाता है। – mydogisbox