Изучая Ocaml, я увидел код, удаляющий повторяющиеся элементы из списка.
let rec remove =
function
| [] -> []
| x::[] -> x::[]
| x::y::tl ->
if x=y then remove (y::tl)
else x::remove (y::tl)
Однако я обнаружил, что этот код удаляет только последовательные дубликаты, поэтому, если я попробую несколько дубликатов, требующихПоместите отдельно, например, [6; 6; 8; 9; 4; 2; 5; 1; 5; 2; 3], код имеет дело с 6, который имеет последовательный дубликат, но не с 2 или 5, которые разделены.
Как мне сделать так, чтобы в списке были только уникальные элементы? как удалить [6; 6; 8; 9; 4; 2; 5; 1; 5; 2; 3] -> [6; 8; 9; 4; 2; 5; 1; 3].
ps Мне удалось удалить дубликаты, которые идут первыми, но я не мог понять, как удалить дубликаты, которые появляются позже.