Proposal: Add Data.List.sortNub and sortNubBy

Donald Bruce Stewart dons at cse.unsw.edu.au
Tue Mar 13 18:45:01 EDT 2007


john:
> On Tue, Mar 13, 2007 at 11:12:40AM +0000, Neil Mitchell wrote:
> > As for Stefan's ordNub, I think it is a great idea to add along with
> > sortNub - this really does give people a nicer set of Nub functions.
> > My only worry is that the dependency on State and Set will make the
> > implementation have cyclic dependency fun.
> 
> once we have ordNub, we can create lots of RULES like the following
> 
> {-# RULES "nub/ordNub" nub = ordNub :: [String] -> [String] #-} 
> {-# RULES "nub/ordNub" nub = ordNub :: [Int] -> [Int] #-} 
> {-# RULES "nub/ordNub" nub = ordNub :: [Integer] -> [Integer] #-} 
> 
> actually, we probably want one that uses IntMap for ints. it is
> signifigantly faster.
> 
> 
> I don't suppose there is a way to match a RULE to a class constraint? I
> don't see how it would be implemented in any easy way since classes get
> desugared away pretty early... but it would be an interesting feature..
> 
> {-# RULES "nub/ordNub" forall (a::*) . Ord a => nub = ordNub :: [a] -> [a] #-} 
> or something...
> 

Hmm, this type-determining-represetation sounds like a job for
associated types :-)

-- Don


More information about the Libraries mailing list