Haskell filter function laziness -
दिए गए:
ले 5 (फ़िल्टर पी एक्सएस) कहते हैं कि अगर फ़िल्टर पी xs 1K मैच लौटाएगा, क्या हास्केल केवल 5 मैचों को फ़िल्टर कर देगा और बड़े इंटरमीडिएट परिणाम के बिना उत्पादन करेगा?
यह 5 कोड का उपयोग करने के लिए केवल xs को स्कैन करेगा, केवल इस उपसर्ग पर p का मूल्यांकन करेगा xs । अधिक सटीक होने के लिए, यह वास्तव में कम गणना करता है, परिणाम के आधार पर इसका उपयोग कैसे किया जाता है। उदाहरण के लिए,
मुख्य = दो पी एक्स = (एक्स == 3) || (X> = 1000000) list1 = [0..1000000000] list2 = take5 (फ़िल्टर पी सूची 1) प्रिंट (सिर list2) केवल list1 स्कैन करेगा जब तक 3 पाया जाता है, और तब तक नहीं, जबकि ले लो पांच तत्वों के लिए पूछ रहा है इसका कारण यह है कि head इन पांचों में से केवल पहले की मांग कर रहा है, इसलिए आलस्य केवल इसका मूल्यांकन करने का कारण बनता है।
Comments
Post a Comment