चलें कहते हैं कि हम निम्नलिखित है:हास्केल: सूची संलयन, इसकी आवश्यकता कहाँ है?
l = map f (map g [1..100])
और हम क्या करना चाहते हैं:
head l
तो हम पाते हैं:
head (map f (map g [1..100]))
अब, हम के पहले तत्व प्राप्त करने के लिए इस। map
तो जैसे कुछ परिभाषित किया गया है: तो फिर
map f l = f (head l) : (map f (tail l))
हम पाते हैं:
f (head (map g [1..100]))
और फिर फिर से लागू किया:
f (g (head [1..100]))
कौन सा
f (g 1)
कोई मध्यवर्ती में जो परिणाम ली एसटीएस बन जाते हैं, बस आलस्य के कारण।
क्या यह विश्लेषण सही है? और इस तरह साधारण संरचनाओं के साथ:
foldl' ... $ map f1 $ map f2 $ createlist
, मध्यवर्ती सूचियों कभी बनाया जाता है यहाँ तक कि "सूची संलयन" बिना? (मुझे लगता है कि आलस्य उन्हें छोटे से खत्म करना चाहिए)।
केवल जगह मैं एक सूची रखने के लिए एक कारण देख सकते हैं अगर हम किया था:
l' = [1..100]
l = map f (map g l')
हम कहाँ l'
रखने के लिए, अगर यह कहीं और प्रयोग किया जाता है चाहते हो सकता है। हालांकि, यहां l'
मामले में, यह कंपाइलर को स्टोर करने की तुलना में उपरोक्त सूची को फिर से समझने के लिए अपने त्वरित महसूस करने के लिए काफी छोटा होना चाहिए।