型で失敗

アレイのuniqです。

ar = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]

main = print $ uniq ar

uniq :: [Int] -> [Int]
uniq [] = []
uniq (x:xs) = x : (uniq $ filter (/= x) xs)

先頭から一つ取り出して、取り出したものと同じ数字を外すというやりかたです。

やり方はすぐに思いついて簡単だと思ったのですが、最初に、

uniq :: [a] -> [a]

こう書いてしまったせいでエラーがなかなか取れず、時間はかかってしまいました。