2015-09-07 9 views
5

क्या एलिक्सिर में सूची समझ आलसी बनाने का कोई तरीका है? यदि नहीं, तो इसे Stream में बदलने का कोई तरीका है?एलिक्सीर में आलसी सूची समझ?

my_list = for i <- (1..1000000), j <- (1..1000000), do: {i, j}

यह कोड स्निपेट बहुत अधिक स्मृति लेने से मेरा कार्यक्रम चल रही है।

मैं एक फ़िल्टर, मानचित्र और my_list पर कम करना चाहता हूं।

उत्तर

18

एक समझ एक समतल नक्शा है।

Stream.flat_map 1..1000000, fn i -> 
    Stream.flat_map 1..1000000, fn j -> 
    [{i, j}] 
    end 
end 

मैं और "समांतर के लिए" भविष्य अमृत संस्करणों के लिए, लेकिन यह भाषा के लिए कुछ अन्य सुधार लंबित है एक "के लिए धारा" का प्रस्ताव किया है: तो अपने कोड बराबर है।

+7

धन्यवाद, जोसे! मैं आपको एलीक्सिर भाषा निर्माता के रूप में जानता था, लेकिन आपने मेरे दिमाग को अब तक एलिक्सीर पर अपने सभी SO सवालों का जवाब दिया। मै तुम्हारा बड़ा प्रशंसक हूँ। मुझे पता है कि आप एक इंसान नहीं हैं, और मेरा मतलब है कि यह सबसे अच्छे तरीके से है। –

संबंधित मुद्दे