For GADTs that are really enumerations, I think deriving Show should work. E.g.

data T a where Foo :: T Int Bar :: T Bool deriving (Show)

There's no(?) intricate behaviour of the derived functions, so why not?

-- Lennart