Eliminar duplicados de una lista en Haskell

Estoy tratando de definir una función que eliminará duplicados de una lista. Hasta ahora tengo una implementación de trabajo:

rmdups :: Eq a => [a] -> [a]
rmdups [] = []
rmdups (x:xs)   | x `elem` xs   = rmdups xs
                | otherwise     = x : rmdups xs

Sin embargo me gustaría volver a trabajar esto sin usarelem. ¿Cuál sería el mejor método para esto?

Me gustaría hacer esto usando mi propia función y nonub onubBy.

Respuestas a la pregunta(9)

Su respuesta a la pregunta