Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 从子列表中删除_List_Haskell_Higher Order Functions_Sublist_Remove - Fatal编程技术网

List 从子列表中删除

List 从子列表中删除,list,haskell,higher-order-functions,sublist,remove,List,Haskell,Higher Order Functions,Sublist,Remove,我试图使用高阶函数从子列表中删除一个数字(如果存在) removeAux :: Int -> [[Int]] -> (Int -> [Int] -> Bool) -> [[Int]] removeAux num (l:ls) f | f num l = delete num l -- ERROR in this line |otherwise = removeAux num ls f removeFromSublists :: Int -> [[

我试图使用高阶函数从子列表中删除一个数字(如果存在)

removeAux :: Int -> [[Int]] -> (Int -> [Int] -> Bool) -> [[Int]]
removeAux num (l:ls) f 
  | f num l = delete num l  -- ERROR in this line
  |otherwise = removeAux num ls f

removeFromSublists :: Int -> [[Int]] -> [[Int]]
removeFromSublists _ [[]] = [[]]
removeFromSublists num ls = removeAux num ls (elem)
假设它是这样工作的:

> l = [[0,1,2],[2,3]]

> removeFromSublists 1 l
[[0,2],[2,3]]

> removeFromSublists 0 l  $ removeFromSubLists 1 l
[[2],[2,3]]

> removeFromSublists 2 l
[[0,1],[3]]
但我有两个问题,我不知道如何解决。首先,它不会删除所有出现的数字,它应该删除吗?我不明白为什么代码不起作用? 我不断发现错误:


有人能帮我吗?

在这里采用类型驱动的方法可能会有所帮助。与中一样,您希望从元素列表中删除某些元素的所有引用

这就是,“给定
a
a的列表(
[[a]]
)返回
a的列表(
[[a]]
):

removeAll::Eq a=>a->[[a]]->[[a]]
removeAll v(列表:列表)=???
我们正在从列表
(列表:ListofList)
中的每个
列表中删除所有
v
。另一种说法是“对于我们的
列表中的每个
列表
,过滤掉
v

因此,我们希望对列表中的每个值执行相同的操作(筛选)。在Haskell中,这转化为将筛选操作映射到
列表中的每个
列表

removeAll::Eq a=>a->[[a]]->[[a]]
移除所有v xs=map(过滤器(/=v))xs

在我看来,最简单的方法就是将lists@RobinZigmond对不起,我不知道怎么办?!