के साथ अलग अंतःस्थापित तत्व मैंने इंटरलस्ड तत्वों को अलग करने के लिए एक फ़ंक्शन लिखा था।सिंगल लूप
interlacedElems :: [a] -> ([a], [a])
interlacedElems xs = (f xs, f $ tail xs)
where f (x:_:xs) = x : f xs
f x = x
main = print $ interlacedElems "a1b2c3d4"
आउटपुट उत्पादित:
("abcd","1234")
मेरी कोड में मैं f
को परिभाषित करने और इसे दो बार उपयोग करते हैं, प्रभावी रूप से एक ही सूची के माध्यम से दो बार, लेकिन थोड़ा अलग ढंग से हर बार recursing।
मेरा प्रश्न है: क्या ऐसा कोई तरीका है जिसे मैं लिख सकता हूं, इसलिए मैं केवल एक बार सूची के माध्यम से पुन: कार्य करता हूं? क्योंकि यह अधिक कुशल होगा, क्या आपको लगता है कि डॉग नहीं है?
मैंने इसे अपने कुछ दिमाग से बाहर निकालने की कोशिश की और फिर मेरी माँ ने मुझे बताया क्योंकि वह कहती है कि मुझे हमेशा जगह पर मस्तिष्क का रस मिल रहा है और गुलाबी दाग से बाहर होने में उम्र लगती है कालीन।
धन्यवाद अच्छा लोगों :)
बस इसे संबोधित करना चाहते हैं: "क्योंकि यह अधिक कुशल होगा, आपको नहीं लगता?"। मेरा अनुमान है कि "शायद नहीं, वास्तव में" - लेकिन आपको निश्चित रूप से मापना चाहिए यदि यह आपके लिए महत्वपूर्ण है! [मानदंड] देखें (http://hackage.haskell.org/package/criterion) या ऐसा कुछ। –