2012-04-07 4 views
6

मैं सूचियों की सूची में दिए गए मान की सभी घटनाओं को हटाना चाहता हूं। उदाहरण के लिए, इनपुट:हैकेल सूचियों की सूची में से किसी दिए गए मान की सभी घटनाओं को हटा देता है

'a' ["abc", "bc", "aa"] 

उत्पादन:

["bc", "bc", ""] 

अब तक:

remove :: Eq a => a -> [[a ]] -> [[a ]] 
remove y xs = filter(\x -> x/= y) xs 

मैं एक त्रुटि हो रही है, आप पहले से धन्यवाद देता हूं।

उत्तर

10

आपको बाहरी सूचियों पर नक्शा लगाने की आवश्यकता है।

remove y xs = map (filter(\x -> x/= y)) xs 

आप करना वास्तव में, यहाँ एक लैम्ब्डा की जरूरत नहीं अच्छे:

remove y xs = map (filter(/=y)) xs 
+3

आप भी 'ड्रॉप कर सकते हैं दोनों पक्षों –

+3

या यहां तक ​​कि' नक्शे पर xs'। फ़िल्टर करें (/ =) ' – Vitus

+0

मैं उनको कैसे याद कर सकता हूं! – leftaroundabout

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