हम तोमैं एक ही सूची में दो मानचित्र कैसे फ्यूज कर सकता हूं?
unzip (map (\x -> (f x, g x)) xs)
की तरह अभिव्यक्ति
(map f xs, map g xs)
में सूची xs
पर दो traversals फ्यूज सकता स्वचालित रूप से संलयन इस तरह का प्रदर्शन कर रहा पर किसी भी reasearch है?
(वहाँ एक जोखिम यहाँ एक अंतरिक्ष रिसाव बनाने के लिए करता है, तो वापस आ सूचियों में से एक अन्य से पहले सेवन किया जाता है है मैं अंतरिक्ष की बचत की तुलना में xs
पर अतिरिक्त ट्रेवर्सल को रोकने में अधिक दिलचस्पी रखता हूँ।।)
संपादित करें: मैं वास्तव में वास्तविक इन-मेमोरी हास्केल सूचियों में संलयन लागू नहीं कर रहा हूं, जहां यह परिवर्तन इस बात पर निर्भर नहीं हो सकता है कि unzip
को इसके उपभोक्ता के साथ जोड़ा जा सकता है या नहीं। मेरे पास एक सेटिंग है जहां मुझे पता है कि unzip
फ्यूज कर सकता है (देखें "फ्लूम जावा: आसान, कुशल डेटा-समांतर पाइपलाइन")।
स्वचालित नहीं है, लेकिन वैसे भी अच्छा है: http://squing.blogspot.com/2008/11/beautiful-folding.html –
जब तक कुछ और चीज़ों के साथ इस फ़्यूज़ का परिणाम जोड़े को बनाने और उन्हें अनजिप करने का ओवरहेड न हो अतिरिक्त ट्रैवर्सल की लागत से बड़ा हो। – augustss
@augustss नहीं अगर ट्रैवर्सल एक बड़ी फाइल पर है! मैं इसे वास्तविक सूचियों पर लागू करने की योजना नहीं बना रहा हूं। – tibbe