अजगर में, मैं कुछ इस तरह कर सकते हैं:स्कैला के लिए समझदारी कब आलसी है?
lazy = ((i,j) for i in range(0,10000) for j in range(0,10000))
sum((1 for i in lazy))
थोड़ा समय लगेगा, लेकिन स्मृति उपयोग निरंतर है।
स्केला में एक ही निर्माण:
(for(i<-0 to 10000; j<-i+1 to 10000) yield (i,j)).count((a:(Int,Int)) => true)
थोड़ी देर के बाद, मैं एक java.lang.OutOfMemoryError
मिलता है, भले ही यह lazily मूल्यांकन किया जाना चाहिए।
"कुछ पसंद है", लेकिन बाद की अभिव्यक्ति 100000001 तत्वों को वापस लौटती है, 50005000 नहीं। व्हिस्की टैंगो फॉक्सट्रॉट? – Malvolio
@ माल्वोलियो ध्यान देने के लिए धन्यवाद! 'j'' i + 1 से 10000' तक होना चाहिए, न कि '1 से 10000'। अब तय –
डी ओह। मुझे केवल समस्या ही नहीं, समाधान देखा जाना चाहिए था। मैं तर्कों को अनदेखा कर, मानचित्र कार्यों पर घूर रहा था .. – Malvolio