
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
2010/6/28 José Romildo Malaquias
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