[Haskell] A question about fundeps <-> GADT interaction