Actually, with existential types and type equality constraints, GADTs
are redundant.  
 
The algorithm is pretty simple:
- existentially quantify over all type variables mentioned in the GADT
constructor
- add a type equality constraint to match the result type
- (optional) simplify

While true, this nevertheless doesn't let me perform 

> unify ''MyGADTType

when MyGADTType was defined with GADT syntax in the first place.  GADT handling for TH is, for the moment, Somebody Else's Problem, and not something I'm going to be able to deal with without hacking on TH itself.

Louis