我对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],[]]
有人可以帮我吗
答案 0 :(得分:6)
因此,不能同时将removeItem
和Int -> [Int] -> [Int]
都设为Int -> [[Int]] -> [[Int]]
。相反,我将后者称为removeItem'
。您已经知道如何从常规列表中删除项目,因此只需使用map
在这些列表中进行操作即可。然后实现就很简单:
removeItem' :: Int -> [[Int]] -> [[Int]]
removeItem' x = map (removeItem x)