>>200
返値も無限リストの場合です。

nub0 :: Eq a => [a] -> [a]
nub0 = nub0' []
nub0' l [] = l
nub0' l (x:xs)
  | elem x l = nub0' l xs
  | otherwise = nub0' (x:l) xs

take 10 (nub0 [1..])