我試圖編寫一個函數,刪除列表中第二次出現的元素。 目前,我寫了一個函數,刪除第一個元素:在列表中刪除元素的第二次發生--Haskell
removeFirst _ [] = []
removeFirst a (x:xs) | a == x = xs
| otherwise = x : removeFirst a xs
爲出發點。但是,我不確定這個功能可以通過列表理解來完成。有沒有一種方法來實現這個使用地圖?
編輯:現在,我已經添加了調用第一
deleteSecond :: Eq a => a -> [a] -> [a]
deleteSecond _ [] = []
deleteSecond a (x:xs) | x==a = removeFirst a xs
| otherwise = x:removeSecond a xs
但是現在返回的列表中刪除一個元素的第一和第二次出現一個removeSecond功能。
'map'返回與其輸入相同長度的列表,您正在查找比輸入短的列表。 – Cirdec
你的代碼包含兩個函數:'removeFirst'和'deleteFirst'。我假設這是一個錯字? – Benesh
是的,這是一個錯字,對不起。我會修改它。 – user3476396