Improving containers library

Jonathan Cast jonathanccast at fastmail.fm
Wed Mar 3 13:08:19 EST 2010


On Wed, 2010-03-03 at 18:58 +0100, Axel Simon wrote:
> On 03.03.2010, at 17:30, Milan Straka wrote:
> 
> > Any easy way of comparing pointers? I mean, if I have something like
> > Tree a = N | B (Tree a) a (Tree a)
> > and have (l::Tree a) and (r::Tree a), can I ask about the "physical
> > equality"?
> 
> You can! Despite the names appearing in the following code, the  
> following is safe:
> 
> -- | Equality on pointers.
> ptrEqual :: a -> a -> Bool
> ptrEqual x y = unsafePerformIO $ do
>    nx <- makeStableName x
>    ny <- makeStableName y
>    return (nx==ny)

Safe but not pure?

jcc




More information about the Libraries mailing list