reallyUnsafePointerEquality :: a -> a -> Int#
but don't use as it can give both false negatives (i.e. GC in the middle of evaluation) and false positives (that GC just finished and put one object right where the other was.)
The better model to obtain what you want to use StableNames and seq and, if you must, a little bit of unsafePerformIO, but note that this means that side-effects and various inlining/sharing improvements caused by the usual compilation process that previously were non-observable become critical to the correctness of your function, which is why the result is in IO to begin with.
Typically you can construct something purely and inspect the result using IO all in one go, so the unsafePerformIO machinery isn't required.
-Edward Kmett
Is there in Haskell a non monadic function of type a -> a -> Bool which
test for physical equality of two values? It would return True if only
if both values are the same object in memory.
For instance:
value1 = "good"
value2 = "good"
eq value1 value2 => False
value1 = "good"
value2 = value1
eq value1 value2 => True
Romildo
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe