从Haskell列表中删除项目

ale*_*ekq -3 int haskell list

我对haskell功能有问题。我想从列表或列表[[Int]]中删除特定元素

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

例如

removeItem :: Int -> [Int] -> [Int]
removeItem _ []                 = []
removeItem x (y:ys) | x == y    = removeItem x ys
                    | otherwise = y : removeItem x ys
Run Code Online (Sandbox Code Playgroud)

但我不能写

removeItem :: Int -> [[Int]] -> [[Int]]
Run Code Online (Sandbox Code Playgroud)

它应该给出一个结果:

removeItem 1 [[1],[2,2],[3],[1]]

  [[],[2,2],[3],[]]
Run Code Online (Sandbox Code Playgroud)

有谁能够帮助我

Jos*_*ica 6

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

removeItem' :: Int -> [[Int]] -> [[Int]]
removeItem' x = map (removeItem x)
Run Code Online (Sandbox Code Playgroud)