On 13-09-20 07:47 AM, damodar kulkarni wrote:
*Main> sqrt (10.0) ==3.1622776601683795 True [...] *Main> sqrt (10.0) ==3.16227766016837956435443343 True
This is not even specific to Haskell. Every language that provides floating point and floating point equality does this. (To date, P(provides floating point equality | provides floating point) seems to be still 1.) In the case of Haskell, where you may have a choice: Do you want floating point > < ? If you say yes, then you have two problems. 1. At present, Haskell puts > < under Ord, and Ord under Eq. You must accept Eq to get Ord. If you reject this, you're asking the whole community to re-arrange that class hierarchy just for a few types. 2. With or without your approval, one can still defy you and define: eq x y = not_corner_case x && not_corner_case y && not (x<y) && not (x>y) See, == can be derived from > < .