Comparing StableNames of different type

Emil Axelsson emax at
Mon Aug 27 06:11:30 CEST 2012

2012-08-26 08:03, Manuel M T Chakravarty skrev:
> Emil Axelsson <emax at>:
>> 2012-08-24 11:08, Simon Marlow skrev:
>>> 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.
>>> 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?
>> No, I want to do observable sharing of heterogeneously typed expressions which means I will be comparing expressions of different type.
> You may like to have a look at how we have done this in the Accelerate EDSL:
> In particular, the Eq instance for stable names of AST nodes is at

Hm, doesn't this impose a `Typeable` constraint on all AST nodes (which 
is what I'm trying to avoid)?

/ Emil

More information about the Glasgow-haskell-users mailing list