[Haskell-cafe] Transforming a ADT to a GADT