[Haskell-cafe] Putting constraints on "internal" type variables in GADTs