[Haskell-cafe] How to implement type level type equality?