我正在尝试学习Erlang中的递归,并正在阅读一本书。但是,当我遇到将一个列表转换为只包含重复元素的问题时,我卡住了。我尝试编写一个函数,它返回唯一的元素,然后从原始列表中删除它们。
adjacent_dups(L) -> L -- uniques(L).
uniques([]) -> [];
uniques([H|T]) -> [H | [X || X <- uniques(T), X /= H]].
然而,当列表结构不良好时,这种方法将无法给出正确的结果。
L = [7,3,4,3]
我的代码将返回
adjacent_dups([7,3,4,3]) -> 3
我该如何获得?
adjacent_dups([7,3,4,3]) -> []