That would actually be wrong. It's easy to come up with examples where this "identity" is false.

For instance:

data T = T Int Int deriving (Ord, Show)
instance Eq T where
    T x _ == T y _ =  x == y

ts = [T 1 1, T 1 undefined]


On Mar 18, 2007, at 23:51 , GHC wrote:

#1218: Add sortNub and sortNubBy to Data.List
---------------------------- +-----------------------------------------------
 Reporter:  neil            |          Owner:
     Type:  proposal        |         Status:  new
 Priority:  normal          |      Milestone:  Not GHC
Component:  libraries/base  |        Version:
 Severity:  normal          |     Resolution:
 Keywords:                  |     Difficulty:  Unknown
 Testcase:                  |   Architecture:  Unknown
       Os:  Unknown         |
---------------------------- +-----------------------------------------------
Comment (by dons):

How about rather than changing the api, purely for efficiency reasons, we
 just add a rewrite rule to Data.List for this optimisation?

 The rule would be:

 {{{
 {-# RULES
 "sort/nub" sort . nub = map head . group . sort
   #-}
 }}}

sort . nub will be rewritten to the optimised case, and we won't need to
 further complicate the API.

Quite often now it is possible for the library author to expose only a small, generic API, while providing internal rules for specific optimised cases. This keeps the interface small, while still providing performance.

 Data.ByteString does this in a number of places, for example:

 {{{
 {-# RULES
   "FPS specialise filter (== x)" forall x.
      filter (== x) = filterByte x
   #-}
 }}}

I'd really not like to see more functions exposed in the list interface,
 only as optimisations, that could be better provided via RULES.

--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/1218>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to