从Haskell列表中删除项目

时间:2019-05-14 01:32:56

标签: list haskell int

我对haskell功能有问题。我想从列表或列表[[Int]]

中删除特定元素

有很多简单的方法可以删除列表[Int]中的元素

例如

removeItem :: Int -> [Int] -> [Int]
removeItem _ []                 = []
removeItem x (y:ys) | x == y    = removeItem x ys
                    | otherwise = y : removeItem x ys

但我不会写

removeItem :: Int -> [[Int]] -> [[Int]]

它应该给出结果:

  

删除项目1 [[1],[2,2],[3],[1]]

  [[],[2,2],[3],[]]

有人可以帮我吗

1 个答案:

答案 0 :(得分:6)

因此,不能同时将removeItemInt -> [Int] -> [Int]都设为Int -> [[Int]] -> [[Int]]。相反,我将后者称为removeItem'。您已经知道如何从常规列表中删除项目,因此只需使用map在这些列表中进行操作即可。然后实现就很简单:

removeItem' :: Int -> [[Int]] -> [[Int]]
removeItem' x = map (removeItem x)