Ocaml “我该怎么做?”;删除“;列表列表中的列表,以及列表中的元素?

Ocaml “我该怎么做?”;删除“;列表列表中的列表,以及列表中的元素?,ocaml,Ocaml,我需要找到一种方法,从给定要查找的特定元素的列表列表中删除列表。例如,一个名为“remove x list”的函数将删除包含x的列表。我正在尝试使用List.filter,但我不知道它是如何工作的。完整的功能是:如果x在列表中,则删除该列表;如果-x在列表中,则从列表中删除元素-x。有什么帮助或指导吗?你的意思是这样的: let lst = [[1;2;3;];[4;5;6;];[1;2;3;];[4;5;6];] let ans = List.filter (fun l -> not(L

我需要找到一种方法,从给定要查找的特定元素的列表列表中删除列表。例如,一个名为“remove x list”的函数将删除包含x的列表。我正在尝试使用List.filter,但我不知道它是如何工作的。完整的功能是:如果x在列表中,则删除该列表;如果-x在列表中,则从列表中删除元素-x。有什么帮助或指导吗?

你的意思是这样的:

let lst = [[1;2;3;];[4;5;6;];[1;2;3;];[4;5;6];]
let ans = List.filter (fun l -> not(List.exists (fun x -> x = 5) l)) lst
ans是:

[[1; 2; 3]; [1; 2; 3]]

您可以使用模式匹配

例如,您想从列表中删除一个元素,因此基本上,当该元素等于您匹配的解构元素时,您将返回不包含该元素的列表

您可以使用head函数来存储迭代的列表,并在递归函数中使用此函数的“副本”

你试过用绝对值来表示-x吗?您可以快速检查模式匹配中的绝对值


祝你好运

你应该更加具体,更加努力,你(具体)尝试了什么,为什么(具体)不起作用?那我们可以帮你。如果你希望人们只是给你答案,然后使用它,你很可能会被发现作弊。堆栈溢出通常由教师和助教监控,以防止发生这种情况。嘿,所以我尝试用你的“ans”替换我的funfilter函数函数,但我添加了一个列表和一个int作为参数,我得到的错误是函数需要一个经典列表,而不是列表列表…我没有更改任何代码,我在调用(funfilter i子句)let funfilter elem xs=list.filter(fun l->not(list.exists)时在函数simplify部分得到错误(fun x->x=elem)l)xs;;ans不是一个函数。ans是一个列表列表。你到底想做什么?你能给出一个列表示例列表和一个你想从列表列表列表和最终列表中删除的元素吗?更新!我明白我的错误是什么(ans是一个列表列表而不是函数)我修复了我的功能。现在一切都正常了!感谢您的帮助,尽管有人建议您不要这样做。