我正在努力学习Erlang中的递归,我正在读一本书.但是当遇到列表并仅返回重复元素的问题时,我正在撞墙.我尝试编写一个函数,它只返回唯一元素,然后从原始列表中删除它们.
adjacent_dups(L) -> L -- uniques(L).
uniques([]) -> [];
uniques([H|T]) -> [H | [X || X <- uniques(T), X /= H]].
Run Code Online (Sandbox Code Playgroud)
但是,当列表结构不合理时,这将不会给出正确的结果.
L = [7,3,4,3]
Run Code Online (Sandbox Code Playgroud)
我的代码将返回
adjacent_dups([7,3,4,3]) -> 3
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到
adjacent_dups([7,3,4,3]) -> []
Run Code Online (Sandbox Code Playgroud)