【发布时间】:2016-01-12 00:31:56
【问题描述】:
我应该从int list 中删除连续的重复项,而不使用递归,并且只使用List.fold、map、filter、fold_left、fold_right。
我几乎明白了,但我的代码的问题是它检查每个元素是否等于第二个元素,而不是下一个元素。
例如,如果let z = int list [3;1;4;5;5;1;1] 我的代码将返回[3;4;5] 而不是[3;1;4;5;1]。我不确定如何更改它,因此filter 使用动态更改的列表参数,而不仅仅是原始参数(因此它不会每次都将每个元素与第二个元素(在这种情况下为 1)进行比较):
let dupe (ls: int list) : int list =
List.filter (fun x -> if List.length ls = 0 then true else if x = List.hd (List.tl xs) then false else true) ls
【问题讨论】:
标签: list recursion module duplicates ocaml