我需要从惰性列表中删除重复项。这是我设法编写的一些代码,但我不知道如何解决它以便正常工作。
我知道如何使用常规列表执行此操作,但懒惰列表对我来说仍然是新的,所以我会很乐意提供任何帮助。这是我试着编写的一段代码:
let rec removeDuplicate = function
LNil -> LNil
|LCons(x,xf) -> x::(removeDuplicate (List.filter (fun a -> a<>x) xf));;
提前感谢您的帮助。
答案 0 :(得分:1)
我在您的代码中看到的第一个问题是,您不是在第二个子句中构建惰性列表,而是实际构建了OCaml的内置list
,{ {1}}雇用运营商。此外,您不能在尾部使用::
,因为它还可以对List.filter
类型的值进行操作,而不是您的列表。