David Menendez schrieb: > On Sun, Dec 21, 2008 at 11:20 AM, Jan-Willem Maessen > <jmaes...@alum.mit.edu> wrote: >> On Dec 21, 2008, at 8:52 AM, Martijn van Steenbergen wrote: >> >>> Hello all, >>> >>> Data.Ord has a handy function called comparing, and its documentation >>> shows an example of its use. >>> >>> But what if you want to sort a list of values based on multiple criteria? >>> It turns out there is a neat way to do this: >>> >>> compareTuple = mconcat [comparing fst, comparing snd] >>> >>> The default Monoid instances for Ordering and functions work exactly as >>> required here. (Thanks to vixey in #haskell for the hint to look at >>> monoids!) > > This is a great example of why it's a bad idea to introduce new > functionality with a Monoid instance. Even if you know the instance > exists, mappend is so general that it's difficult or impossible to > predict what it will do at a given type. > > There should be an explicit function for combining Ordering values > lexicographically, with a note in the documentation saying that it's > the basis of the Monoid instance.
+1 http://haskell.org/haskellwiki/Slim_instance_declaration _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe