Arie Groeneveld wrote:

Ok, so when do I use nub instead of 'map head.group.sort'?

Never. If |nub_sort=map head.group.sort| is applicable, then you are dealing with a member of class Ord, so use the O(n*log n) |nub_sort|. If you want to preserve the relative order of the input list, use something like

nub_cache :: Ord a => [a] -> [a]
nub_cache = onub Set.empty
    where onub seen (x:xs)
              | Set.member x seen =     onub               seen  xs
              | otherwise         = x : onub (Set.insert x seen) xs
          onub _ _ = []

|nub_cache| also works for infinite lists, btw.

/BR

--
-- Mirko Rahn -- Tel +49-721 608 7504 --
--- http://liinwww.ira.uka.de/~rahn/ ---
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to