टी एल; डॉ आप लगभग निश्चित रूप से एक बग का सामना करना पड़ा है। उस ने कहा, map
और »
हाइपरोप में प्रमुख अंतर हैं।
map
Seq देता है। यह Seq
पैदावार डेटा संरचना की आपूर्ति के लिए एक उपयोगकर्ता के तत्वों में से प्रत्येक के लिए उपयोगकर्ता की आपूर्ति कोड लागू करने के परिणाम:
- एक स्तर गहरी (डेटा संरचना की ट्रेवर्सल उथला है -
map
रिकर्सिवली उप करने के लिए उतरना नहीं है एक समय में डेटा संरचना के शीर्ष स्तर)
- एक के ढांचे (सब कुछ क्रमिक रूप से किया जाता है, समानांतर में कुछ भी नहीं है)
- lazily (
map
रिटर्न तुरंत; उपयोगकर्ता की आपूर्ति कोड उपयोगकर्ता की आपूर्ति की डेटा संरचना बाद में परिणाम उत्पन्न करने के लिए लागू किया जाता है Seq
से मूल्य खींचने के लिए आवश्यक)
»
hyperop रिटर्न पर डेटा संरचना संकार्य, उसके बाईं पहला यह है कि डेटा संरचना के तत्वों के अपने अधिकार की पर एकल आपरेशन लागू करने के बाद:
- केवल एक ही स्तर गहरी याleavesको उतरते जैसा कि यूनरी ऑपरेशन
- समानांतर बैचों में, कम से कम अर्थात् (यह एक यूनरी ऑपरेशन चुनने के लिए प्रोग्रामर की ज़िम्मेदारी है जो पैरा में कई तत्वों पर लागू होने पर सही परिणाम देगा मनमाना क्रम में llel)
- बेसब्री से (एक
map
कॉल के विपरीत, एक hyperoperation केवल लौटाता है जब एकल ऑपरेटर पूरे डेटा संरचना करने के लिए लागू किया गया है)
आप एक एकल ऑपरेटर कि है "nodal" (लागू कर रहे हैं इसलिए हाइपरपरेशन उतरने का विकल्प नहीं चुनता) या डेटा संरचना का संचालन केवल एक स्तर गहरा होता है (इसलिए उच्च रक्तचाप के लिए निम्न स्तर के पत्ते नहीं होते हैं) तो हाइपर ऑपरेशन और map
के बीच अंतर एक यूनरी ऑपरेटर के साथ होते हैं अनुक्रमिक/समांतर और आलसी/उत्सुक पहलुओं।
यह मुझे बहुत स्पष्ट लगता है कि sum
एक नोडल ऑपरेटर होना चाहिए अन्यथा यह उप-संरचनाओं में तब तक उतरेगा जब तक कि यह अलग-अलग पत्तियों पर न आए और इस प्रकार एकल मूल्यों के समूह पर लागू हो जाए जो व्यर्थ है। ईटीए: ऐसा लगता है कि यह अभी तय है।
यह सब सच है, लेकिन ध्यान दें कि हाइपर ऑपरेटर आवश्यक रूप से घटकों में नहीं उतरते हैं (सीएफ 'कहना ([1,2], [2, 2], [3, 3])» elems'); तर्कसंगत रूप से, 'List.sum' में सिर्फ' नोडल 'एनोटेशन की कमी है ... – Christoph