Emil Axelsson <e...@chalmers.se>: > 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: https://github.com/AccelerateHS/accelerate/blob/master/Data/Array/Accelerate/Smart.hs In particular, the Eq instance for stable names of AST nodes is at https://github.com/AccelerateHS/accelerate/blob/master/Data/Array/Accelerate/Smart.hs#L763 You may be able to use our entire scheme. (We have started to write it up as a paper, but the write up isn't in a coherent state yet.) Manuel _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users