#4019: deriving Ord can produce incorrect and inefficient instances
---------------------------------+------------------------------------------
    Reporter:  rl                |        Owner:                             
        Type:  bug               |       Status:  new                        
    Priority:  normal            |    Milestone:                             
   Component:  Compiler          |      Version:  6.13                       
    Keywords:                    |   Difficulty:                             
          Os:  Unknown/Multiple  |     Testcase:                             
Architecture:  Unknown/Multiple  |      Failure:  Incorrect result at runtime
       Patch:  0                 |  
---------------------------------+------------------------------------------

Comment(by rl):

 You are quite right, these are two separate issues. I originally thought
 that they are symptoms of the same problem but this is obviously not the
 case.

 With respect to efficiency, ideally automatically derived Ord methods
 would use appropriate comparison operators instead of compare for
 comparing the last field of a constructor. That is, deriving Ord should
 generate this:

 {{{
 (a,b) > (c,d) = case compare a c of
                   GT -> True
                   EQ -> b > d    -- instead of compare b d == GT
                   LT -> False
 }}}

 But perhaps this is too minor (although if would be interesting to find
 out if this has a measurable effect on nofib).

 As to correctness, IEEE floating point comparisons simply aren't a total
 ordering. I don't know what to do here, either, but I think this is more
 of a language definition problem than a GHC issue. For the moment, I would
 perhaps simply say that comparisons involving !NaNs produce unspecified
 results (i.e., it is an unchecked precondition of compare and friends that
 they aren't applied to a !NaN).

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