[Haskell-cafe] data kinds and exhaustiveness of typeclass instances