#3280: The order of arguments to the function passed to nubBy got swapped 
somehow
-----------------------------+----------------------------------------------
Reporter:  guest             |          Owner:                  
    Type:  bug               |         Status:  new             
Priority:  normal            |      Component:  libraries/base  
 Version:  6.10.3            |       Severity:  normal          
Keywords:                    |       Testcase:                  
      Os:  Unknown/Multiple  |   Architecture:  Unknown/Multiple
-----------------------------+----------------------------------------------
 According to the Report:
 {{{
   nubBy            :: (a -> a -> Bool) -> [a] -> [a]
   nubBy eq []      =  []
   nubBy eq (x:xs)  =  x : nubBy eq (filter (\y -> not (eq x y)) xs)
 }}}
 Hence, we should have that
 {{{
 nubBy (<) (1:2:[])
 = 1 : nubBy (<) (filter (\y -> not (1 < y)) (2:[]))
 = 1 : nubBy (<) []
 = 1 : []
 }}}
 However in ghc-6.10.3:
 {{{
 Prelude Data.List> nubBy (<) [1,2]
 [1,2]
 }}}
 The order of the parameters to the function which is passed to nubBy is
 *important* since the function might not be an equivalence relation. nubBy
 is more generally useful for sieving even when the relation is not
 symmetric. groupBy, for a similar reason, has applications for grouping
 beyond those provided by equivalence relations, and I think we should be
 able to rely on its behaviour.

 Moreover, I contend that the Report's order is more sensible, since the
 parameters to the relation stay in the left-to-right order in which they
 occurred in the list.

  - Cale

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/3280>
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

Reply via email to