[GHC] #9004: Add sortOn function to Data.List

GHC ghc-devs at haskell.org
Wed Apr 16 18:22:09 UTC 2014


#9004: Add sortOn function to Data.List
-------------------------------------------+-------------------------------
       Reporter:  JohnWiegley              |             Owner:
           Type:  feature request          |            Status:  new
       Priority:  normal                   |         Milestone:  7.10.1
      Component:  libraries/base           |           Version:  7.8.2
       Keywords:                           |  Operating System:
   Architecture:  Unknown/Multiple         |  Unknown/Multiple
     Difficulty:  Easy (less than 1 hour)  |   Type of failure:
     Blocked By:                           |  None/Unknown
Related Tickets:                           |         Test Case:
                                           |          Blocking:
-------------------------------------------+-------------------------------
 The following passed for two weeks on the libraries mailing list without
 any dissenting votes.

 The request is to add the following function to Data.List:

 {{{
 -- | Sort a list by comparing the results of a key function applied to
 each
 --   element.  @sortOn f@ is equivalent to @sortBy . comparing f@, but has
 the
 --   performance advantage of only evaluating @f@ once for each element in
 the
 --   input list.  This is called the decorate-sort-undecorate paradigm, or
 --   Schwartzian transform.
 sortOn :: Ord b => (a -> b) -> [a] -> [a]
 sortOn f = map snd . sortBy (comparing fst)
                    . map (\x -> let y = f x in y `seq` (y, x))
 }}}

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9004>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list