[Haskell-cafe] Re: generalised algebraic data types, existential types, and phantom types