strings – Unique elements, long runtime Haskell

I have two functions. Both have to have unique elements, one with Integers and the other a String which returns a list of Char. My runtime is currently quite high and I’m not allowed to use imports, but I was wondering how to improve them:

uniqueInt:: (Int) -> (Int)
uniqueInt() = ()
uniqueInt xs = (x | (x,y) <- zip xs (0..), x `notElem` (take y xs))

Example:
uniqueInt (1,2,1,3,1,2) = (1,2,3)

uniqueString :: String -> (Char)
uniqueString ""=()
uniqueString xs = (x | (x,y) <- zip xs (0..), x `notElem` (take y xs))

Example: uniqueString “hello”=”helo”