我对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]]
Run Code Online (Sandbox Code Playgroud)[[],[2,2],[3],[]]
有谁能够帮助我
因此,您不能同时拥有removeItembe Int -> [Int] -> [Int]和Int -> [[Int]] -> [[Int]]。相反,我称后者removeItem'。您已经知道如何从常规列表中删除项目,因此只需map在这些列表中进行操作即可。然后实现很简单:
removeItem' :: Int -> [[Int]] -> [[Int]]
removeItem' x = map (removeItem x)
Run Code Online (Sandbox Code Playgroud)