删除集合中的子集

时间:2015-03-03 15:26:07

标签: ocaml

删除列表列表中的子集,例如:给定ls的类型为int list listls的结果为result函数:{{1} }

int list list -> int list list
<{1}}的结果是:ls: [[1;2;3;4];[1;2];[1;2;3];[0]]

我有:

ls

你能帮我弄清楚如何编写删除功能吗?

2 个答案:

答案 0 :(得分:0)

您只需使用Int_Set.diff

答案 1 :(得分:0)

我已经用List数据结构做了一个例子,它给了我想要的结果。

以下是代码:

let map_filter l1 ls = List.map (List.filter (fun x -> List.mem x l1))ls

let result_filter ls =
  match ls with
  | [] -> []
  | l1 :: ls' -> map_filter l1 ls'

let result ls =
    let ls' = result_filter ls in
    List.filter (fun l -> not (List.mem l ls')) ls