How to describe this bug?

Christian Maeder Christian.Maeder at dfki.de
Tue Jul 10 15:59:40 CEST 2012


It also works (exposes the bug on x86) without Quickcheck and Doubles:

main = prop 6.0 0.109998815
prop m x = do
     let a = x * m
     putStrLn (show a ++ " foo")
     print (x * m == a)


0.65999289 foo
False

The middle line seems to prevent CSE.

C.

Am 10.07.2012 13:06, schrieb Sönke Hahn:
> I've attached the code. The code does not make direct use of
> unsafePerformIO. It uses QuickCheck, but I don't think, this is a
> QuickCheck bug. The used Eq-instance is the one for Float.
>
> I've only managed to reproduce this bug on 32-bit-linux with ghc-7.4.2
> when compiling with -O2.
>
> (The code might seem a bit odd, but this is the most boiled down version
> I could come up with. Even removing the "module Main where" line changes
> the behaviour.)
>
> Cheers,
> Sönke
>
>
> On 07/10/2012 12:51 PM, malcolm.wallace wrote:
>> Also, it is more likely to be a buggy instance of Eq, than a real loss
>> of referential transparency.
>>
>> Regards,
>>      Malcolm
>>
>>
>> On Jul 10, 2012, at 11:49 AM, Christopher Done <chrisdone at gmail.com> wrote:
>>
>>> Depends what the real offending code is. For example, if it contains
>>> unsafePerformIO then it's not a bug.
>>>
>>> On 10 July 2012 12:42, Sönke Hahn <shahn at cs.tu-berlin.de
>>> <mailto:shahn at cs.tu-berlin.de>> wrote:
>>>> Hi!
>>>>
>>>> I've discovered a strange bug that violates simple equational reasoning.
>>>> Basically, something similar to this:
>>>>
>>>> let a = f x
>>>> in a == f x
>>>>
>>>> evaluates to False.
>>>>
>>>> I'd like to report this on ghc-trac, but I realised, that I don't know a
>>>> good name for behaviour like this. Is there one? "Broken referential
>>>> transparency", perhaps?
>>>>
>>>> Thanks,
>>>> Sönke
>>>>
>>>>
>>>> _______________________________________________
>>>> Glasgow-haskell-users mailing list
>>>> Glasgow-haskell-users at haskell.org
>>> <mailto:Glasgow-haskell-users at haskell.org>
>>>> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
>>>
>>> _______________________________________________
>>> Glasgow-haskell-users mailing list
>>> Glasgow-haskell-users at haskell.org
>>> <mailto:Glasgow-haskell-users at haskell.org>
>>> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
>>
>>
>> _______________________________________________
>> Glasgow-haskell-users mailing list
>> Glasgow-haskell-users at haskell.org
>> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
>>
>
>
>
>
> _______________________________________________
> Glasgow-haskell-users mailing list
> Glasgow-haskell-users at haskell.org
> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
>




More information about the Glasgow-haskell-users mailing list