[Haskell] GADT type inference problem