从惰性列表Ocaml中删除重复项

时间:2014-11-12 15:38:41

标签: ocaml lazylist

我需要从惰性列表中删除重复项。这是我设法编写的一些代码,但我不知道如何解决它以便正常工作。

我知道如何使用常规列表执行此操作,但懒惰列表对我来说仍然是新的,所以我会很乐意提供任何帮助。这是我试着编写的一段代码:

let rec removeDuplicate = function
LNil -> LNil
|LCons(x,xf) -> x::(removeDuplicate (List.filter (fun a -> a<>x) xf));;

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我在您的代码中看到的第一个问题是,您不是在第二个子句中构建惰性列表,而是实际构建了OCaml的内置list,{ {1}}雇用运营商。此外,您不能在尾部使用::,因为它还可以对List.filter类型的值进行操作,而不是您的列表。