从列表中删除元素Haskell

时间:2020-11-11 06:55:05

标签: list haskell

我正在尝试从列表列表中删除元素,但前提是该元素位于长度为1的列表中。例如:

removeElement 1 [[2,3],[1,2],[1]]  
                [[2,3],[1,2]]

removeElement 2 [[1,2,3,4]] 
                [[1,2,3,4]]

removeElement 3 [[3],[1,4,5]] 
                [[1,4,5]]

到目前为止,我已经有了这个,但是我不知道如何继续或使用哪个函数。

removeElement :: (Eq a) => a -> [[a]] -> [[a]]
removeElement a [[]] = []
removeElement a ((x:xs):rs) = if a == x then (xs:rs) else  [x] :( removeElement a (xs:rs))

1 个答案:

答案 0 :(得分:2)

这是filtering的示例:

removeElement :: Eq a => a -> [[a]] -> [[a]]
removeElement e = filter (/= [e])

使用ghci测试示例:

> removeElement 1 [[2,3],[1,2],[1]]
[[2,3],[1,2]]
> removeElement 2 [[1,2,3,4]]
[[1,2,3,4]]
> removeElement 3 [[3],[1,4,5]]
[[1,4,5]]