首页 > 解决方案 > 从列表列表中删除一个元素 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))

标签: listhaskell

解决方案


这是一个过滤的例子:

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]]

推荐阅读