[Haskell-cafe] bug in System.Mem.StableName

Luke Palmer lrpalmer at gmail.com
Mon Jan 26 09:21:38 EST 2009


2009/1/26 Alberto G. Corona <agocorona at gmail.com>

> Sometimes the StableName library gives different values for the samr
> function:
>

First, unsafePerformIO is not subject to referential transparency.  You have
to ensure it yourself.  That's why it's unsafe.

Now, did you read the StableName documentation?  From the docs:

Stable names have the following property:  if sn1 :: StableName and sn2 ::
> StableName and sn1 == sn2 then sn1 and sn2 were created by calls to
> makeStableName on the same object.  The reverse is not necessarily true: if
> two stable names are not equal, then the objects they name may still be
> equal.


So the behavior you cite is perfectly reasonable: does not break referential
transparency (unsafePerformIO is the culprit here), and is consistent with
the documentation.

Luke

Sometines gives two alternate values. I checked it in ghc-6.10.1 under
> windows and in ghc-6.8.2 under Linux:
>
> This is an example
>
> Prelude>
> System.Mem.StableName.hashStableName.System.IO.Unsafe.unsafePerformIO $
>  System.Mem.StableName.makeStableName (*)
> 15
> Prelude>
> System.Mem.StableName.hashStableName.System.IO.Unsafe.unsafePerformIO $
>  System.Mem.StableName.makeStableName (*)
> 14
> Prelude>
> System.Mem.StableName.hashStableName.System.IO.Unsafe.unsafePerformIO $
>  System.Mem.StableName.makeStableName (*)
> 15
> Prelude>
> System.Mem.StableName.hashStableName.System.IO.Unsafe.unsafePerformIO $
>  System.Mem.StableName.makeStableName (*)
> 14
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20090126/ca7ba44b/attachment.htm


More information about the Haskell-Cafe mailing list