
You can wind up with StableNames matching even when the types differ. Consider naming [] :: [Int] and [] :: [()]. This is harmless for most usecases.
I've used unsafeCoerce to compare StableNames on different types for years without problems.
Admittedly, I do find it a bit of an oddity that the type shows up in their signature at all. :)
Sent from my iPhone
On Aug 24, 2012, at 5:08 AM, Simon Marlow
On 24/08/2012 07:39, Emil Axelsson wrote:
Hi!
Are there any dangers in comparing two StableNames of different type?
stEq :: StableName a -> StableName b -> Bool stEq a b = a == (unsafeCoerce b)
I could guard the coercion by first comparing the type representations, but that would give me a `Typeable` constraint that would spread throughout the code.
I think that's probably OK. It should be safe even if the types are different, but I presume you expect the types to be the same, since otherwise the comparison would be guaranteed to return False, right?
Cheers, Simon
_______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users