I have a map from Int to some existential type. I know that two separate references have the same type if the integer is the same, so how to coerce? https://stackoverflow.com/questions/29684482/can-i-coerce-an-existentially-quantified-argument-in-a-type-constructor http://hackage.haskell.org/package/base-126.96.36.199/docs/Data-Typeable.html http://hackage.haskell.org/package/base-188.8.131.52/docs/Data-Dynamic.html Or just use unsafeCoerce? Yeah maybe not. Dynamic seems to be the way to go.