
New patches:

[Add sortOn and other *On convenience functions to Data.List
Twan van Laarhoven <twanvl@gmail.com>**20081005152524] {
hunk ./Data/List.hs 176
-   --
-   -- It is often convenient to use these functions together with
-   -- 'Data.Function.on', for instance @'sortBy' ('compare'
-   -- \`on\` 'fst')@.
hunk ./Data/List.hs 193
+   -- ** The \"@On@\" operations
+   -- | The functions with the suffixed with \`@On@\'
+   -- apply a transformation before comparing values,
+   -- and do the comparisons /on/ the transformed value.
+
+   , nubOn             -- :: Eq b => (a -> b) -> [a] -> [a]
+   , deleteOn          -- :: Eq b => (a -> b) -> a -> [a] -> [a]
+   , deleteFirstsOn    -- :: Eq b => (a -> b) -> [a] -> [a] -> [a]
+   , unionOn           -- :: Eq b => (a -> b) -> [a] -> [a] -> [a]
+   , intersectOn       -- :: Eq b => (a -> b) -> [a] -> [a] -> [a]
+   , groupOn           -- :: Eq b => (a -> b) -> [a] -> [[a]]
+
+   , sortOn            -- :: Ord b => (a -> b) -> [a] -> [a]
+   , insertOn          -- :: Ord b => (a -> b) -> a -> [a] -> [a]
+   , maximumOn         -- :: Ord b => (a -> b) -> [a] -> a
+   , minimumOn         -- :: Ord b => (a -> b) -> [a] -> a
+
hunk ./Data/List.hs 1038
+-- -----------------------------------------------------------------------------
+-- 'On' functions
+
+comparing :: Ord b => (a -> b) -> (a -> a -> Ordering)
+comparing f x y = compare (f x) (f y)
+
+equating :: Eq b => (a -> b) -> (a -> a -> Bool)
+equating f x y = f x == f y
+
+
+-- | The 'nubOn' function is the transforming version of 'nub'.
+nubOn             :: Eq b => (a -> b) -> [a] -> [a]
+nubOn             =  nubBy . equating
+
+-- | The 'deleteOn' function is the transforming version of 'delete'.
+deleteOn          :: Eq b => (a -> b) -> a -> [a] -> [a]
+deleteOn          =  deleteBy . equating
+
+-- | The 'deleteFirstsOn' function is the transforming version of 'deleteFirstsBy'.
+deleteFirstsOn    :: Eq b => (a -> b) -> [a] -> [a] -> [a]
+deleteFirstsOn    =  deleteFirstsBy . equating
+
+-- | The 'unionOn' function is the transforming version of 'union'.
+unionOn           :: Eq b => (a -> b) -> [a] -> [a] -> [a]
+unionOn           =  unionBy . equating
+
+-- | The 'intersectOn' function is the transforming version of 'intersect'.
+intersectOn       :: Eq b => (a -> b) -> [a] -> [a] -> [a]
+intersectOn       =  intersectBy . equating
+
+-- | The 'groupOn' function is the transforming version of 'group'.
+groupOn           :: Eq b => (a -> b) -> [a] -> [[a]]
+groupOn           =  groupBy . equating
+
+
+-- | The 'sortOn' function implements a stable sorting algorithm.
+-- The elements are compared \`on\' the given transformation.
+sortOn            :: Ord b => (a -> b) -> [a] -> [a]
+sortOn            =  sortBy . comparing
+
+-- | The transforming version of 'insert'.
+insertOn          :: Ord b => (a -> b) -> a -> [a] -> [a]
+insertOn          =  insertBy  . comparing
+
+-- | 'maximumOn' takes a transformation and a list
+-- and returns the element from the list whose transformed value is the largest.
+-- The list must be finite and non-empty.
+maximumOn         :: Ord b => (a -> b) -> [a] -> a
+maximumOn         =  maximumBy . comparing
+
+-- | 'minimumOn' takes a transformation and a list
+-- and returns the element from the list whose transformed value is the smallest.
+-- The list must be finite and non-empty.
+minimumOn         :: Ord b => (a -> b) -> [a] -> a
+minimumOn         =  minimumBy . comparing
+
+
}

Context:

[added new module Data.Data
'Jose Pedro Magalhaes <jpm@cs.uu.nl>'**20081002140535
 
 The new Data.Data module contains all of Data.Generics.Basics 
 and most of Data.Generics.Instances. The missing instances were 
 deemed dubious and moved to the syb package.
] 
[add new Data.Data module
'Jose Pedro Magalhaes <jpm@cs.uu.nl>'**20081002082735] 
[restore Complex's derived Data instance
'Jose Pedro Magalhaes <jpm@cs.uu.nl>'**20081002082655] 
[update Data.Generics import
'Jose Pedro Magalhaes <jpm@cs.uu.nl>'**20081002082604] 
[Don't use ^(2::Int) in Data.Complex.magnitude; partially fixes trac #2450
Ian Lynagh <igloo@earth.li>**20081004142651
 We still might want to make a RULE for this, so the bug is not fully fixed.
] 
[Restore the Haskell 98 behaviour of Show Ratio (#1920)
Simon Marlow <simonmarhaskell@gmail.com>**20080923134949] 
[Pad version number to 4.0.0.0
Ian Lynagh <igloo@earth.li>**20080920155801] 
[TAG 6.10 branch has been forked
Ian Lynagh <igloo@earth.li>**20080919123437] 
Patch bundle hash:
d661a3809766a97cc0ae77865b5641ca36df62a7
