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 <marlo...@gmail.com> wrote: > 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 _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users