Performance horrors
John Meacham
john at repetae.net
Tue Aug 26 19:00:38 EDT 2008
nub has a couple advantages over the n log n version, the main one being
that it only requires an 'Eq' constraint, not an 'Ord' one. another
being that it is fully lazy, it produces results even for an infinite
list. a third is that the results come out in the order they went in.
That said, I have a 'snub' (sorted nub) routine I use pretty commonly as
well defined in the standard way. If you have something like
setnub xs = f Set.empty xs where
f _ [] = []
f s (x:xs) = if x `Set.member` s then f s xs else f (Set.insert
x xs) (x:xs)
then you can use 'RULES' pragmas to replace nub with setnub when it is
allowed.
Though, I have reservations about using RULES to change the order of
complexity.
John
--
John Meacham - ⑆repetae.net⑆john⑈
More information about the Libraries
mailing list